我注意到,即使在两个相似但不同的设备(即三星Galaxy S4和S7)上进行简单循环,执行时间也会发生巨大差异。在S7上,以下测试大约需要5毫秒,在S4上大约需要250毫秒,相差50倍。我确定S7比S4快,但是50倍???
我尝试了Android Profiler(CPU,MEMORY),但是没有看到任何危险信号。 S7应用程序的CPU煮熟率约为10%,而S4应用程序的CPU煮沸率约为25%。
下面的代码是我的实际应用中的 st 摘录。
//@ 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 (无法优化)处理,会有所不同。在Debug和Release版本之间也没有任何区别。
我已经打了一个星期了,没有更多的见识。
有人对此有任何想法吗?还是我很走运?
答案 0 :(得分:0)
实际上,它是Exynos 5
与Snapdragon 820
或Exynos 8
CPU。 API级别也在那里发挥作用;内核的数量以及并行使用的内核数量。就在昨天,我们读了一个Q & A,该书正在比较C
和Java
上的ARM
和x86
。 S4
上的或操作系统可能已使用错误的标志进行了编译;并非完全错误,但并未像S7
操作系统那样进行优化。
您还可以使用AnTuTu对它们进行基准测试……得分大约为五分之一。
我想S7
可能有Snapdragon 820
...
答案 1 :(得分:0)
结果证明那只是一个坏电话。真尴尬我借用了朋友的S3,我的基准测试显示性能降低了约50%(〜10毫秒),对于更老的手机来说,这是正常的期望。奇怪的是我的S4完美地工作了-太慢了。伙计,那是我一个星期都不会浪费的浪费时间。