VAST difference in execution time for simple loop: How come?
我注意到,在两个相似但不同的设备(即三星Galaxy S4和S7)上,即使是一个简单的循环,其执行时间也存在巨大差异。在S7上,下面的测试需要约5毫秒,在S4~250毫秒上,相差50倍。我确定S7比S4快,但是50倍????
我尝试过Android分析器(CPU、内存),但没有看到任何危险信号。S7应用程序在大约10%的CPU和大约25%的S4下烹饪。
下面的代码是我实际应用程序的一个非常简单的摘录。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | //@ 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 } |
我认为这可能是优化方面的差异,但它没有相关性不同的是,如果我把真实(不可优化)的处理放在循环中。调试和发布版本之间也没有任何区别。
我已经打败这个一个星期了,没有更多的洞察力。有人知道这件事吗?还是我运气不好?
结果发现那只是个坏电话。多么尴尬啊。我借用了一个朋友的S3,我的基准测试显示性能降低了50%(约10毫秒),我认为这是对更老手机的正常预期。奇怪的是,我的S4工作得很好——只是速度很慢。孩子,那是我浪费了一个星期的时间,我再也回不来了。
实际上,它是一个
你也可以用安图图作为他们的基准,分数大约是五分之一。
我想