perf - ljatsh/Test GitHub Wiki

Performance Test

History

  1. 2019-04-29: initial version

Android Simple Perf实践

  • 运行 借助工具脚本app_profiler.py还是很简单地能够运行起来

    python app_profiler.py -p cn.vstudio.herox  -a org.cocos2dx.lua.AppActivity -r '-e task-clock -g -f 1000 --duration 180'

    期初在模拟器上跑,提示错误

    DEBUG:root:run adb cmd: ['/Users/longjun/Library/Android/sdk/ndk-bundle/../platform-tools/adb', 'shell', '/data/local/tmp/simpleperf', 'record', '-e task-clock -g -f 1000 --duration 30', '-o', '/data/local/tmp/perf.data', '--app', 'cn.vstudio.herox']
    simpleperf E event_selection_set.cpp:363] dwarf callchain sampling is not supported on this device.
    DEBUG:root:profiling result [False]
    Failed to record profiling data.
    

    检查日志,发现profiler会尝试以root身份运行,于是换用支持root的镜像,问题依旧。这个问题暂时没能克服。 本以为未经root的真机设备不能运行,尝试下来,居然一帆风顺。 可以参考这个加速运行速度

  • 分析结果

    python report.py -g --sort dso
    python report.py  -g --gui --sort symbol --dsos /data/app/cn.vstudio.herox-Py_R4PH1Gzi6SHlfQHtq7g==/lib/arm/libherox.so
    Cmdline: /data/data/cn.vstudio.herox/simpleperf record --in-app --tracepoint-events /data/local/tmp/tracepoint_events -e task-clock -g -f 1000 --duration 180 -o perf.data --app cn.vstudio.herox
    Arch: arm64
    Event: task-clock (type 1, config 1)
    Samples: 108605
    Error Callchains: 22375, 20.602182%
    Event count: 135756250000
    
    Children  Self    Shared Object
    48.79%    40.77%  /data/app/cn.vstudio.herox-FLYwmvLjbolrqMLqUqIC-A==/lib/arm/libherox.so
    34.19%    26.90%  /vendor/lib/egl/libGLESv2_adreno.so
    31.80%    0.01%   /data/app/cn.vstudio.herox-FLYwmvLjbolrqMLqUqIC-A==/oat/arm/base.odex
    30.80%    0.28%   //anon
    29.50%    7.12%   /system/lib/libc.so
    
    Cmdline: /data/data/cn.vstudio.herox/simpleperf record --in-app --tracepoint-events /data/local/tmp/tracepoint_events -e task-clock -g -f 1000 --duration 180 -o perf.data --app cn.vstudio.herox
    Arch: arm64
    Event: task-clock (type 1, config 1)
    Samples: 44277
    Error Callchains: 21, 0.047429%
    Event count: 55346250000
    
    Children  Self   Symbol
    68.37%    0.04%  cocos2d::Director::mainLoop()
          [skipped in brief callgraph mode]
    68.18%    0.07%  cocos2d::Director::drawScene()
          [skipped in brief callgraph mode]
    45.91%    0.02%  cocos2d::Scene::render(cocos2d::Renderer*, cocos2d::Mat4 const&, cocos2d::Mat4 const*)
          [skipped in brief callgraph mode]
    45.78%    0.05%  cocos2d::Scene::render(cocos2d::Renderer*, cocos2d::Mat4 const*, cocos2d::Mat4 const*, unsigned int)
          [skipped in brief callgraph mode]
    32.01%    5.74%  cocos2d::Node::visit(cocos2d::Renderer*, cocos2d::Mat4 const&, unsigned int)
    ...
    

Reference

TODO

提供脚本运行并自动汇报结果 https://blog.csdn.net/tq08g2z/article/details/77311712

⚠️ **GitHub.com Fallback** ⚠️