【发布时间】:2018-11-17 17:08:10
【问题描述】:
我注意到,即使是在两个相似但不同的设备(即三星 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 (不可优化)处理放入循环中,则会有所不同。 Debug 和 Release 版本之间也没有任何区别。
我已经击败了一个星期了,没有任何额外的见解。
有人对此有任何想法还是我只是运气不好?
【问题讨论】:
-
两部手机的操作系统是什么,您能否确认它们是否都在 ART 上运行,或者其中一个在 dalvik 上
-
S4是Android V5.01,S7是V8.0。由于我的基准测试中没有操作系统交互,恕我直言,我看不出这个版本会产生什么影响。
-
两者都是 Dalvik,ART 不会在 S4 上运行。
标签: android performance cpu-usage