简单循环的执行时间差异巨大:怎么会这样?
VAST difference in execution time for simple loop: How come?
我注意到在两个相似但不同的设备(即三星 Galaxy S4 和 S7)上,即使是一个简单的循环,执行时间也存在巨大差异。在 S7 上,下面的测试需要大约 5 毫秒,而在 S4 上需要大约 250 毫秒,相差 50 倍。我确定 S7 比 S4 快,但是 50X???
我试过 Android Profiler (CPU, MEMORY) 但没有看到任何危险信号。 S7 应用程序的使用率约为 10% CPU,而 S4 应用程序的使用率约为 25%。
下面的代码是大量从我的实际应用中摘录的代码。
//@ Test Timing
public static void timingTest()
{
int i,count=0;
long t1,t2;
String TAG="MYAPP";
t1 = System.currentTimeMillis();
for( i=0; i<4000000; i++ ) { // get start time
count++; // just bump count
}
t2 = System.currentTimeMillis(); // get stop time
String msg=String.format( "ELAPSED = %8.3f sec.", 0.001*(t2-t1) );
Log.i( TAG, msg ); // announce elapsed time
}
我以为可能是优化上的差异,结果没做成相对的
如果我将 real (不可优化的)处理放在循环中,就会有所不同。调试和发布版本之间也没有任何区别。
我已经解决这个问题一个星期了,没有任何额外的见解。
有人对此有任何想法还是我只是运气不好?
实际上,它是 Exynos 5
对 Snapdragon 820
或 Exynos 8
CPU。 API 级别也在那里发挥作用;以及内核的数量以及并行使用的内核数量。就在昨天阅读 Q & A,它比较 C
和 Java
与 ARM
和 x86
。 或 S4
上的 OS 可能是用错误的标志编译的;并非完全错误,但未像 S7
OS.
那样进行优化
您还可以使用 AnTuTu 对它们进行基准测试...其中分数约为五分之一。
我猜 S7
可能有一个 Snapdragon 820
...
好吧,事实证明这只是一个 糟糕的 phone。多么尴尬。我借了一个朋友的 S3,我的基准测试显示性能降低了大约 50%(~10 毫秒),我认为这是对更老 phone 的正常预期。奇怪的是我的 S4 工作 完美 - 就是慢。男孩,那是浪费时间的一周,我再也回不来了。
我注意到在两个相似但不同的设备(即三星 Galaxy S4 和 S7)上,即使是一个简单的循环,执行时间也存在巨大差异。在 S7 上,下面的测试需要大约 5 毫秒,而在 S4 上需要大约 250 毫秒,相差 50 倍。我确定 S7 比 S4 快,但是 50X???
我试过 Android Profiler (CPU, MEMORY) 但没有看到任何危险信号。 S7 应用程序的使用率约为 10% CPU,而 S4 应用程序的使用率约为 25%。
下面的代码是大量从我的实际应用中摘录的代码。
//@ Test Timing
public static void timingTest()
{
int i,count=0;
long t1,t2;
String TAG="MYAPP";
t1 = System.currentTimeMillis();
for( i=0; i<4000000; i++ ) { // get start time
count++; // just bump count
}
t2 = System.currentTimeMillis(); // get stop time
String msg=String.format( "ELAPSED = %8.3f sec.", 0.001*(t2-t1) );
Log.i( TAG, msg ); // announce elapsed time
}
我以为可能是优化上的差异,结果没做成相对的 如果我将 real (不可优化的)处理放在循环中,就会有所不同。调试和发布版本之间也没有任何区别。
我已经解决这个问题一个星期了,没有任何额外的见解。
有人对此有任何想法还是我只是运气不好?
实际上,它是 Exynos 5
对 Snapdragon 820
或 Exynos 8
CPU。 API 级别也在那里发挥作用;以及内核的数量以及并行使用的内核数量。就在昨天阅读 Q & A,它比较 C
和 Java
与 ARM
和 x86
。 或 S4
上的 OS 可能是用错误的标志编译的;并非完全错误,但未像 S7
OS.
您还可以使用 AnTuTu 对它们进行基准测试...其中分数约为五分之一。
我猜 S7
可能有一个 Snapdragon 820
...
好吧,事实证明这只是一个 糟糕的 phone。多么尴尬。我借了一个朋友的 S3,我的基准测试显示性能降低了大约 50%(~10 毫秒),我认为这是对更老 phone 的正常预期。奇怪的是我的 S4 工作 完美 - 就是慢。男孩,那是浪费时间的一周,我再也回不来了。