众所周知编程语言运算符的效率差异不小,今天博主对赋值运算,加法,减法,乘法,乘法,取模,位运算分别用C和JAVA进行了效率测试,产生了一些令我无法解释的测试结果,以此文章把问题记录下来,希望日后可以解决,也恭请各位大牛来帮忙,下面把我的测试出的问题罗列一下。
测试环境:CPU :i3-370M ;内存:4G; JAVA IDE:elipse ;C IDE:VC6.0,C-Free5.0。
问题一:到底是乘法效率高,还是除法效率高?
一些书籍记录乘法效率比除法效率高,比如对于浮点数m /= 2 应该改写成m *= 0.5于是我就做了如下的两个测试
C代码:
#include <stdio.h>
#include <time.h>
main(){
long count = 100000000;
float test = 1;
int start_time, end_time;
start_time = clock();
while(--count > 0)
test /= 2;
end_time = clock();
printf( "test /= 2耗时%d毫秒\n", (end_time - start_time));
getchar();
}
测试结果:平均在
600ms
当我们把测试代码test /= 2 改为 test *= 0.5时
测试结果:平均在:520ms
符合我们的期望值
再来看看同样的代码在JAVA上运行:
public class FuHaoCeshi {
public static void main(String[] args){
int count = 100000000;
long start_time = 0;
long end_time = 0;
float test = 1;
start_time = System.currentTimeMillis();
while(--count > 0)
test