X-Git-Url: http://plrg.eecs.uci.edu/git/?p=folly.git;a=blobdiff_plain;f=folly%2Fexperimental%2Fsymbolizer%2Ftest%2FDwarfBenchmark.cpp;h=50f63c80f94d30f6d4a8a93e6b5ea25ee55dbc8c;hp=877b58118014fbc40851761f4da0707860d79bfc;hb=cb3a7e4572affb970e7491a94c9503b6a2745d1e;hpb=4598dd7067fb84d53913acaf80d0df585ba4d0f7 diff --git a/folly/experimental/symbolizer/test/DwarfBenchmark.cpp b/folly/experimental/symbolizer/test/DwarfBenchmark.cpp index 877b5811..50f63c80 100644 --- a/folly/experimental/symbolizer/test/DwarfBenchmark.cpp +++ b/folly/experimental/symbolizer/test/DwarfBenchmark.cpp @@ -20,9 +20,12 @@ void dummy() {} -BENCHMARK(DwarfFindAddress, n) { +namespace { + +using namespace folly::symbolizer; + +void run(Dwarf::LocationInfoMode mode, size_t n) { folly::BenchmarkSuspender suspender; - using namespace folly::symbolizer; // NOTE: Using '/proc/self/exe' only works if the code for @dummy is // statically linked into the binary. ElfFile elf("/proc/self/exe"); @@ -30,10 +33,20 @@ BENCHMARK(DwarfFindAddress, n) { suspender.dismiss(); for (size_t i = 0; i < n; i++) { Dwarf::LocationInfo info; - dwarf.findAddress(uintptr_t(&dummy), info); + dwarf.findAddress(uintptr_t(&dummy), info, mode); } } +} // namespace + +BENCHMARK(DwarfFindAddressFast, n) { + run(folly::symbolizer::Dwarf::LocationInfoMode::FAST, n); +} + +BENCHMARK(DwarfFindAddressFull, n) { + run(folly::symbolizer::Dwarf::LocationInfoMode::FULL, n); +} + int main(int argc, char* argv[]) { gflags::ParseCommandLineFlags(&argc, &argv, true); google::InitGoogleLogging(argv[0]);