llvm-project/llvm/tools/llvm-objdump
Seiya Nuta d5177643f0 [llvm-objdump][NFC] Make the PrettyPrinter::printInst() output buffered
Summary:
Every time PrettyPrinter::printInst is called, stdout is flushed and it makes llvm-objdump slow. This patches adds a string
buffer to prevent stdout from being flushed.

Benchmark results (./llvm-objdump-master: without this patch,  ./bin/llvm-objcopy: with this patch):

  $ hyperfine --warmup 10 './llvm-objdump-master -d ./bin/llvm-objcopy' './bin/llvm-objdump -d ./bin/llvm-objcopy'
  Benchmark #1: ./llvm-objdump-master -d ./bin/llvm-objcopy
    Time (mean ± σ):      2.230 s ±  0.050 s    [User: 1.533 s, System: 0.682 s]
    Range (min … max):    2.115 s …  2.278 s    10 runs

  Benchmark #2: ./bin/llvm-objdump -d ./bin/llvm-objcopy
    Time (mean ± σ):     386.4 ms ±  13.0 ms    [User: 376.6 ms, System: 6.1 ms]
    Range (min … max):   366.1 ms … 407.0 ms    10 runs

  Summary
    './bin/llvm-objdump -d ./bin/llvm-objcopy' ran
      5.77 ± 0.23 times faster than './llvm-objdump-master -d ./bin/llvm-objcopy'

Reviewers: alexshap, Bigcheese, jhenderson, rupprecht, grimar, MaskRay

Reviewed By: jhenderson, MaskRay

Subscribers: dexonsmith, jhenderson, javed.absar, kristof.beyls, rupprecht, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D64969

llvm-svn: 366984
2019-07-25 06:38:27 +00:00
..
CMakeLists.txt Fix debug build by adding missing dependencies on libBinaryFormat 2018-05-15 00:46:43 +00:00
COFFDump.cpp [Object] Change ObjectFile::getSectionContents to return Expected<ArrayRef<uint8_t>> 2019-05-14 04:22:51 +00:00
ELFDump.cpp [llvm-objdump] errorToErrorCode+message -> toString 2019-04-25 04:31:26 +00:00
LLVMBuild.txt Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MachODump.cpp Print dylib load kind (weak, reexport, etc) in llvm-objdump -m -dylibs-used 2019-06-18 22:20:10 +00:00
WasmDump.cpp [llvm-objdump] Wrap things in namespace llvm 2019-04-15 15:31:42 +00:00
llvm-objdump.cpp [llvm-objdump][NFC] Make the PrettyPrinter::printInst() output buffered 2019-07-25 06:38:27 +00:00
llvm-objdump.h [llvm-objdump] Delete unused forward declarations 2019-04-15 15:08:01 +00:00