「Cは速い、Javaは遅い」でしょ?
Video2BrainのObjectiv-C3.0チュートリアルのタイムテーブルの例を、a) Eclipse / Javaとb) MacBookProQuadcore上のXCode/Objectiv-Cで比較しました。その結果は私を絶対に驚かせました。JavaはObjective-Cの実装より3倍高速です。Java:Objective-Cと比較して0.718秒:2.416秒。
質問:何が恋しいですか?これはどのように説明できますか?ありがとう!
a)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コンパイラオプション:コンパイラ:AppleLLVMコンパイラ4.2
@jlordo:timesTable [row] [column] =(row +1)*(column +1)* countに変更すると、同じ結果が得られます
@uchuugaka:そうですね、Javaと比較して基本的にCに同意します。私は両方とも5回テストを実行します。システムが再起動しました。他のアプリケーションは実行されていません。
@Anoop Vaidya:はい、最新バージョンです。同じ時間を取得します。LLVMGCC4.2またはAppleLLVMコンパイラ4.2に違いはありません。
UPDATE2
@justin:ありがとう、問題は解決しました。ビルド設定->最適化レベル