“C 快,Java 慢”,对吧?
我比较了 Video2Brain 的 Objectiv-C 3.0 教程中的时间表示例,用于a) Eclipse/Java 和b) MacBook Pro Quadcore 上的 XCode/Objectiv-C。结果绝对让我吃惊。Java 比 Objective-C 实现快 3 倍。Java:0.718 秒,而 Objective-C:2.416 秒。
问题:我想念什么?这怎么解释?谢谢!
一)Java代码:
public static void main(String[] args) {
int timesTable[][] = new int[10][10];
long beginTime = System.currentTimeMillis();
// 10 000 000 x
for (int count = 0; count < 10000000; count++) {
for (int row = 0; row < 10; row++) {
for (int col = 0; col < 10; col++) {
timesTable[row][col] = (row +1) * (col +1);
}
}
}
long endTime = System.currentTimeMillis();
System.out.println("Time elapsed = " + (endTime - beginTime) + "ms");
}
b) Objective-C 代码
int main(int argc, char* argv[]) {
int timesTable[10][10];
CFAbsoluteTime beginTime = CFAbsoluteTimeGetCurrent();
// 10 000 000 x
for (int count = 0; count < 10000000; count++) {
for (int row = 0; row < 10; row++) {
for (int col = 0; col < 10; col++) {
timesTable[row][col] = (row +1) * (col +1);
}
}
}
CFAbsoluteTime endTime = CFAbsoluteTimeGetCurrent();
NSLog(@"Time elapsed = %f", endTime - beginTime);
}
更新
@nhahtdh 编译器选项:编译器:Apple LLVM 编译器 4.2
@jlordo:当我更改为 timesTable[row][column] = (row +1) * (column +1) * count 时,我得到相同的结果
@uchuugaka:是的,我同意它与 Java 相比基本上是 C。我两次都进行了五次测试。系统已重新启动。没有其他应用程序在运行。
@Anoop Vaidya:是的,最新版本,我得到相同的时间,LLVM GCC 4.2 或 Apple LLVM 编译器 4.2 没有区别
更新2
@justin:谢谢,问题解决了。构建设置 -> 优化级别