【问题标题】:How can I profile my Android app? [closed]如何配置我的 Android 应用程序? [关闭]
【发布时间】:2011-04-21 17:48:14
【问题描述】:

我需要找出我的 Android 应用程序的瓶颈所在。

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

【问题讨论】:

  • 我对安卓不熟悉。您可以在可以中断的调试器下运行应用程序吗?如果是这样,此方法有效:stackoverflow.com/questions/375913/…
  • 嗯,很有趣。有点劳动密集型,但可能有助于发现更明显的性能问题。谢谢。
  • 我明白你怎么会这么想:stackoverflow.com/questions/2624667/…
  • 现在您可以在 Eclipse 中进行很好的分析。忘记 TraceView 等的独立/手动启动等。我希望写一篇关于此的博客文章,并提供更多详细信息。如果您需要更多详细信息,请联系我。
  • 您建议有比 TraceView 或 DDMS 更好的东西。这是什么?

标签: java android performance profiling


【解决方案1】:

您可以使用 Traceview。它远非理想,但有效。 This article 描述了如何使用它。

【讨论】:

【解决方案2】:

DDMS 最适合 Android。 默认情况下,它包含在 ADT 插件中。

This 文档中的详细示例应该可以帮助您处理 DDMS。


对于内存分析,试试 Eclipse MAT

【讨论】:

【解决方案3】:

这取决于你要测试什么。

如果您为 Android 开发应用程序,您应该尝试 TimingLogger 类。看看 this article 描述 TimingLogger 辅助类的用法。

一个很好的工具是JMeter,还有一个plugin for 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 的教程。

【讨论】:

    【解决方案4】:

    http://developer.android.com/training/articles/perf-tips.html 中推荐的另一个工具是 Caliper:https://code.google.com/p/caliper/。 (我没用过,所以不太了解。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-07
      • 2013-02-20
      • 2010-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-24
      • 1970-01-01
      相关资源
      最近更新 更多