c言語、javaの実行速度について、解決できない疑問があります。
以下の2つを実行したところ、
javaが圧倒的に速かったのですが、
この差はなぜなのでしょうか。
ソースは他のサイトを参考にしました。
http://takenaka-akio.org/etc/benchmark/
実行環境は、MacBook Pro 2.2GHz Core i7 メモリ16GBです。
## Cの場合
```c
#include <stdio.h>
int main(int argc, char *argv[]) {
int rep = 1000000; // 足し算の回数
int n = 10000; // 変数の数(配列の要素数)
int x[10000] = {};
for (int j = 0; j < rep; ++j) {
for (int i = 0; i < n; ++i) {
x[i] += 1;
}
}
}
```
```bash
$ clang main.c -o main.out
$ time ./main.out
real0m26.795s
user0m26.754s
sys0m0.028s
```
## javaの場合
```java
package com.company;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int rep = 1000000;
int n = 10000;
int[] x = new int[n];
Arrays.fill(x, 0);
for (int j = 0; j < rep;) {
for (int i = 0; i < n;) {
x[i] += 1;
i++;
}
j++;
}
}
}
```
```bash
$ time java com.company.Main
real0m1.698s
user0m2.134s
sys0m0.217s
```