【发布时间】:2014-06-17 18:44:07
【问题描述】:
我正在为 Android 编写一个小 Javagame,想知道在 Eclipse 中是否有可能找出哪个方法花费的时间最多来执行。
【问题讨论】:
-
使用像 JVisualVM 这样的分析器。
-
或者只记录方法开始和结束的时间戳。
标签: java android eclipse adt timing
我正在为 Android 编写一个小 Javagame,想知道在 Eclipse 中是否有可能找出哪个方法花费的时间最多来执行。
【问题讨论】:
标签: java android eclipse adt timing
这取决于你要测试什么。
如果您为 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 = lEndTime - lStartTime;
System.out.println("Elapsed milliseconds: " + difference/1000000);
您也可以看看这个免费库:http://jetm.void.fm/
【讨论】: