测量渲染ListView的时间

时间:2011-03-10 08:38:39

标签: android performance list

如何测量ListView / ListActivity渲染其列表所需的时间?

我有一个需要很长时间才能显示的ListActivity(在较旧的设备上它是〜3s),我想优化它。

编辑:

我在Activity1和Activity2之间已经有时间了。在此期间,Activity2正在做一些事情(初始化)。除其他外,它呈现其列表。我希望这个活动花时间来呈现该列表。如果活动之间的总时间是3秒,我想知道渲染列表是否需要2.9秒或0.5秒....

2 个答案:

答案 0 :(得分:3)

你可以简单地输出时间。例如,您可以使用logcat

final long t0 = System.currentTimeMillis();

// code to measure

Log.w(TAG, "TEXT" + System.currentTimeMillis()-t0);

当然,您可以使用任何其他系统进行输出,如对话框或内容。只需使用你喜欢的东西。

编辑:

如果你不想在你的代码中一直使用调试消息,你可以这样做:

创建一个名为settings的类:

public class Settings {
public static final boolean DEBUG = true;
// If you prefer you could do use an enum
// enum debugLevel {SHOW_EVERYMESSAGE, ERRORS, IMPORTANT_MESSAGES, ...}
// In your classes you would have to check that DEBUG is less or equal than
// the debugLevel you want 
}

在要使用调试消息的类中,只需执行此操作

import xxx.yyy.Settings

class foo {
  final static boolean DEBUG = Settings.DEBUG;
  if(DEBUG){
    // Debug messages
  }
}

现在,如果您想要禁用DEBUG消息,只需在“设置”类中设置DEBUG = false即可。

如果要在两个活动之间进行测量,可以使用意图并将t0发送给另一个活动以计算时间。当然,您可以在if(DEBUG){ /* code */ }语句中包含此内容,以免在最终版本中发送意图。 if语句不应过于显着地增加代码的计算。

答案 1 :(得分:1)

我无法判断Java是否使用System.currentTimeMillis()System.nanoTime()提供了更好的实现。不过,你应该试试TimingLogger课程。看一下这个article describing the usage of the TimingLogger helper class