Tested the following on bionic:
$ cat main.cpp
#include <benchmark/benchmark.h>
#include <vector>
static __attribute__ ((noinline)) int my_really_big_function()
{
for(size_t i = 0; i < 1000; ++i)
{
benchmark::DoNotOptimize(i % 5);
}
return 0;
}
static __attribute__ ((noinline)) void caller1()
{
for(size_t i = 0; i < 1000; ++i)
{
benchmark::DoNotOptimize(my_really_big_function());
benchmark::DoNotOptimize(i % 5);
}
}
static __attribute__ ((noinline)) void myfun(benchmark::State& state)
{
while(state.KeepRunning())
{
caller1();
}
}
BENCHMARK(myfun);
BENCHMARK_MAIN();
$ clang++ main.cpp -o main -fno-omit-frame-pointer -O0 -lpthread
-lbenchmark
$ perf record -g ./main
$ perf report -g 'graph,0.5,caller'
Result:
- with linux-tools-common 4.15.0-46.49:
Samples: 3K of event 'cpu-clock', Event count (approx.): 757250000
Children Self Command Shared Object Symbol
+ 99.67% 0.00% main libbenchmark.so.1.3.0 [.] 0x0000000000015b58
+ 99.67% 0.00% main main [.]
_ZL5myfunRN9benchmark5StateE
+ 99.64% 0.17% main main [.] _ZL7caller1v
+ 99.50% 99.47% main main [.]
_ZL22my_really_big_functionv
...
- with linux-tools-common 4.15.0-47.50 (from -proposed):
Samples: 3K of event 'cpu-clock', Event count (approx.): 755000000
Children Self Command Shared Object Symbol
+ 99.77% 0.00% main libbenchmark.so.1.3.0 [.] 0x0000000000015b58
+ 99.77% 0.00% main main [.] myfun
+ 99.70% 0.13% main main [.] caller1
+ 99.64% 99.64% main main [.] my_really_big_function
...
This problem seems fixed now.
** Tags removed: verification-failed-bionic
** Tags added: verification-done-bionic
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1396654
Title:
C++ demangling support missing from perf
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1396654/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs