JDevlieghere added a comment.

I used `image dump line-table` to benchmark the performance difference. I did a 
RelWithDebugInfo build of clang and picked 237 files to dump.

  repeat 10 "time ./bin/lldb -b -o 'image dump line-table ARCMT.cpp 
ARCMTActions.cpp FileRemapper.cpp ObjCMT.cpp PlistReporter.cpp TransAPIUses.cpp 
TransARCAssign.cpp TransAutoreleasePool.cpp TransBlockObjCVariable.cpp 
TransEmptyStatementsAndDealloc.cpp TransGCAttrs.cpp TransGCCalls.cpp 
TransProperties.cpp TransProtectedScope.cpp TransRetainReleaseDealloc.cpp 
TransUnbridgedCasts.cpp TransUnusedInitDelegate.cpp 
TransZeroOutPropsInDealloc.cpp TransformActions.cpp Transforms.cpp APValue.cpp 
ASTConsumer.cpp ASTContext.cpp ASTDiagnostic.cpp ASTDumper.cpp ASTImporter.cpp 
ASTImporterLookupTable.cpp ASTStructuralEquivalence.cpp ASTTypeTraits.cpp 
AttrImpl.cpp CXXInheritance.cpp Comment.cpp CommentBriefParser.cpp 
CommentCommandTraits.cpp CommentLexer.cpp CommentParser.cpp CommentSema.cpp 
ComparisonCategories.cpp DataCollection.cpp Decl.cpp DeclBase.cpp DeclCXX.cpp 
DeclFriend.cpp DeclGroup.cpp DeclObjC.cpp DeclOpenMP.cpp DeclPrinter.cpp 
DeclTemplate.cpp DeclarationName.cpp Expr.cpp ExprCXX.cpp 
ExprClassification.cpp ExprConstant.cpp ExprObjC.cpp ExternalASTSource.cpp 
FormatString.cpp ItaniumCXXABI.cpp ItaniumMangle.cpp JSONNodeDumper.cpp 
Mangle.cpp MicrosoftCXXABI.cpp MicrosoftMangle.cpp NSAPI.cpp 
NestedNameSpecifier.cpp ODRHash.cpp OSLog.cpp OpenMPClause.cpp ParentMap.cpp 
PrintfFormatString.cpp QualTypeNames.cpp RawCommentList.cpp RecordLayout.cpp 
RecordLayoutBuilder.cpp ScanfFormatString.cpp SelectorLocationsKind.cpp 
Stmt.cpp StmtCXX.cpp StmtIterator.cpp StmtObjC.cpp StmtOpenMP.cpp 
StmtPrinter.cpp StmtProfile.cpp StmtViz.cpp TemplateBase.cpp TemplateName.cpp 
TextNodeDumper.cpp Type.cpp TypeLoc.cpp TypePrinter.cpp VTTBuilder.cpp 
VTableBuilder.cpp ASTMatchFinder.cpp ASTMatchersInternal.cpp Parser.cpp 
AnalysisDeclContext.cpp BodyFarm.cpp CFG.cpp CFGReachabilityAnalysis.cpp 
CFGStmtMap.cpp CallGraph.cpp CloneDetection.cpp CocoaConventions.cpp 
CodeInjector.cpp ConstructionContext.cpp Consumed.cpp Dominators.cpp 
ExprMutationAnalyzer.cpp LiveVariables.cpp ObjCNoReturn.cpp 
PostOrderCFGView.cpp ProgramPoint.cpp ReachableCode.cpp 
RetainSummaryManager.cpp ThreadSafety.cpp ThreadSafetyCommon.cpp 
ThreadSafetyTIL.cpp UninitializedValues.cpp Attributes.cpp Builtins.cpp 
CharInfo.cpp CodeGenOptions.cpp Cuda.cpp Diagnostic.cpp DiagnosticIDs.cpp 
DiagnosticOptions.cpp FileManager.cpp FileSystemStatCache.cpp FixedPoint.cpp 
IdentifierTable.cpp LangOptions.cpp LangStandards.cpp Module.cpp 
ObjCRuntime.cpp OpenMPKinds.cpp OperatorPrecedence.cpp SanitizerBlacklist.cpp 
SanitizerSpecialCaseList.cpp Sanitizers.cpp SourceLocation.cpp 
SourceManager.cpp TargetInfo.cpp AArch64.cpp AMDGPU.cpp ARC.cpp ARM.cpp AVR.cpp 
BPF.cpp Hexagon.cpp Lanai.cpp Le64.cpp MSP430.cpp Mips.cpp NVPTX.cpp 
OSTargets.cpp PNaCl.cpp PPC.cpp RISCV.cpp SPIR.cpp Sparc.cpp SystemZ.cpp 
TCE.cpp WebAssembly.cpp X86.cpp XCore.cpp Targets.cpp TokenKinds.cpp 
Version.cpp Warnings.cpp XRayInstr.cpp XRayLists.cpp BackendUtil.cpp 
CGAtomic.cpp CGBlocks.cpp CGBuiltin.cpp CGCUDANV.cpp CGCUDARuntime.cpp 
CGCXX.cpp CGCXXABI.cpp CGCall.cpp CGClass.cpp CGCleanup.cpp CGCoroutine.cpp 
CGDebugInfo.cpp CGDecl.cpp CGDeclCXX.cpp CGException.cpp CGExpr.cpp 
CGExprAgg.cpp CGExprCXX.cpp CGExprComplex.cpp CGExprConstant.cpp 
CGExprScalar.cpp CGGPUBuiltin.cpp CGLoopInfo.cpp CGNonTrivialStruct.cpp 
CGObjC.cpp CGObjCGNU.cpp CGObjCMac.cpp CGObjCRuntime.cpp CGOpenCLRuntime.cpp 
CGOpenMPRuntime.cpp CGOpenMPRuntimeNVPTX.cpp CGRecordLayoutBuilder.cpp 
CGStmt.cpp CGStmtOpenMP.cpp CGVTT.cpp CGVTables.cpp CodeGenAction.cpp 
CodeGenFunction.cpp CodeGenModule.cpp CodeGenPGO.cpp CodeGenTBAA.cpp 
CodeGenTypes.cpp ConstantInitBuilder.cpp CoverageMappingGen.cpp 
ItaniumCXXABI.cpp MacroPPCallbacks.cpp MicrosoftCXXABI.cpp ModuleBuilder.cpp 
ObjectFilePCHContainerOperations.cpp PatternInit.cpp SanitizerMetadata.cpp 
SwiftCallingConv.cpp TargetInfo.cpp VarBypassDetector.cpp 
CrossTranslationUnit.cpp Action.cpp Compilation.cpp DarwinSDKInfo.cpp 
Distro.cpp Driver.cpp DriverOptions.cpp Job.cpp Multilib.cpp Phases.cpp 
SanitizerArgs.cpp Tool.cpp' ~/llvm/build-benchmark/bin/clang > /dev/null"

**LLDB Line Table Parser**

  6.13 real         4.97 user         1.13 sys
  6.15 real         5.00 user         1.12 sys
  6.11 real         4.96 user         1.11 sys
  6.10 real         4.95 user         1.12 sys
  6.14 real         4.98 user         1.13 sys
  6.15 real         4.98 user         1.13 sys
  6.10 real         4.94 user         1.13 sys
  6.18 real         5.02 user         1.13 sys
  6.15 real         4.95 user         1.16 sys
  6.06 real         4.92 user         1.10 sys
  --------------------------------------------
  6.13 real

**LLVM Line Table Parser**

  6.34 real         5.11 user         1.16 sys
  6.34 real         5.13 user         1.17 sys
  6.35 real         5.14 user         1.17 sys
  6.29 real         5.09 user         1.15 sys
  6.27 real         5.07 user         1.16 sys
  6.32 real         5.13 user         1.15 sys
  6.21 real         5.04 user         1.13 sys
  6.13 real         4.99 user         1.11 sys
  6.08 real         4.93 user         1.12 sys
  6.13 real         4.97 user         1.12 sys
  --------------------------------------------
  6.25 real

There's a small slowdown (~1.9%) which is not unexpected given that we need to 
do bridging to LLVM.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D62570/new/

https://reviews.llvm.org/D62570



_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to