为什么同样的代码java运行比c快
c语言:
#include <stdio.h>
#include <time.h>
int main(){
clock_t time = clock();
int n = 0;
int i;
for(i=0; i<1000000000; i++){
n += i;
}
time = clock()-time;
printf("%d %lld\n", n, time/1000);
return 0;
}
java:
public class Main{
public static void main(String[] args){
long time = System.currentTimeMillis();
int n = 0;
int i;
for(i=0; i<1000000000; i++){
n += i;
}
time = System.currentTimeMillis()-time;
System.out.println(n+" "+time);
}
}
求大神解释?
[解决办法]
clock返回的单位和秒没有直接关系。
[解决办法]
这故意构造的超过编译器循环展开优化和常数优化的能力, 就故意折腾编译器用的...
如果循环次数小于 65536 , 几个编译器都直接优化成了常数, 不过M$VC优化好像最差, 唉..
gcc没有优化成类似下面的目标代码, 太失望了:
int i , j;
for(i=0; i<1000000000; i+=1000){
for(j = 0; j < 1000; ++j)
n += i + j;
}
[解决办法]