如何为我的Android应用程序创建性能分析报告?

92

我需要找到我的Android应用程序中的瓶颈在哪里。

有哪些分析工具或技术可以使用?


我不熟悉Android。你能在一个可以中断的调试器下运行应用程序吗?如果可以,这种方法是有效的:https://dev59.com/n3RC5IYBdhLWcg3wOOL1#378024 - Mike Dunlavey
嗯,有趣。有点费力,但可能对发现更明显的性能问题有用。谢谢。 - teedyay
我理解你为什么会这样想:https://dev59.com/HnE85IYBdhLWcg3wwWat#2624725 - Mike Dunlavey
现在你可以在Eclipse内部进行很好的分析。忘记独立/手动启动TraceView等。我希望写一篇关于此的博客文章,提供更多细节。如果您需要更多详细信息,请联系我。 - KarolDepka
2
你认为TraceView或DDMS之外还有更好的工具吗?是什么? - Peri Hartman
4个回答

37
您可以使用 Traceview。虽然它并不完美,但可以工作。 这篇文章介绍了如何使用 Traceview。

2
当我运行它时,它会说命令行版本已过时,然后退出。新方法是什么? - gonzobrains
新方法是Android Studio中的Android Profiler:https://developer.android.com/studio/profile/android-profiler - mhansen

18

DDMS是Android中最好的工具,它默认包含在ADT插件中。

这篇详细的文档示例应该会帮助您处理DDMS。


对于内存分析,请尝试使用Eclipse MAT。


4
安卓文档 DDMS 相关内容:http://developer.android.com/tools/debugging/ddms.html - sulai

11

这要看你要测试什么。

如果你正在开发Android应用程序,你应该尝试使用TimingLogger类。请查看描述TimingLogger帮助类使用方法的这篇文章

一个非常好的工具是JMeter,也有一个针对Android的插件

如果你不想使用外部工具,而是想采用非常标准的方式来测量经过的时间,你必须使用System.nanoTime()。你不应该使用currentTimeMillis,因为它测量的是挂钟时间,由于没有电脑的时钟是完美的(它们都偶尔需要校正),所以会有一个运行并持续发出小的纠正系统时钟的进程。更不用说闰秒的校正了。

尽管currentTimeMillis经常被使用,但它仍然不正确地测量经过的时间和时间。无论如何,由于调用需要一些时间,你不应该期望正确地计时非常非常小的时间间隔。但在处理Android时这不应该是个问题。

我会给你展示一个例子:

long startTime = System.nanoTime();

// run/call the method

long endTime = System.nanoTime();
long diff = endTime - startTime ;
System.out.println("Elapsed milliseconds: " + diff /1000000);

你也可以看一下这个免费的库:http://jetm.void.fm/

同样,你也可以找到 JMeter 的教程


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接