我在Google Play上安装了一些第三方应用。出于某些研究目的,我需要对这些应用进行分析。
例如,描述某些回调函数的时间,例如“onCreat()”“onStartCommand()”“onStopped()”,开始和结束。
有任何线索吗?
答案 0 :(得分:1)
如果你可以在调试器下运行整个事情,那么第三方代码是否有调试信息并不重要,只要你按下Ctrl-C或Pause,如果它在你的一个回调中,它显示了堆栈上的回调。
堆栈跟踪在回调中应该看起来像这样:
<some system/library routines called by your callback>
...
YourCallbackCode
...
<the 3rd-party routines>
...
YourTopLevelCode
...
main()
因此,如果您采用10或20个这样的样本,YourCallbackCode
出现在堆栈上的时间部分是对其负责的时间段的良好估计。
(除非它非常小,在这种情况下,您的代码不是瓶颈。)
例如,如果它在50%的堆栈样本上,则它负责50%的时间(大约)。
因此,如果您可以减少一半的时间(例如减少new
s),那么您将节省50%的一半,或总体上25%,加速100/75 = 1.33 = 33%
您甚至可以看到回调代码中的哪些行花费了大部分时间。
答案 1 :(得分:0)
选择开源的应用程序,在调试模式下从源代码编译它们,然后分析结果。