はじめに
プログラマーにしか解けない! #実行時間クイズ をやってみました。
FoH6ESorz79IWhk さん、kuizy さん、ありがとうございます。
また、実行環境としてAtCoder のコードテストをお借りしました。
AtCoder さん、ありがとうございます。
C++
c.c
#include <iostream>
using namespace std;
int ret[10009];
int main() {
int N = 10000, sum = 0;
for (int i = 1; i <= N; i++) {
for (int j = 1; j <= N; j++) {
ret[i] += i * j;
ret[i] %= 10007;
}
}
return 0;
}
元の問題より、出力部分を省略しています。
316 ms
Ruby
ruby.rb
n = 10000
sum = 0
ret = Array.new(10009, 0)
n.times do |i|
n.times do |j|
ret[i] += i * j
ret[i] %= 10007
end
end
9294 ms
Java
java.java
class Main {
public static void main(String[] args) {
int ret[] = new int[10009];
int N = 10000, sum = 0;
for (int i = 1; i <= N; i++) {
for (int j = 1; j <= N; j++) {
ret[i] += i * j;
ret[i] %= 10007;
}
}
}
}
392 ms
Crystal
Crystal.cr
n = 10000
sum = 0
ret = Array.new(10009, 0)
n.times do |i|
n.times do |j|
ret[i] += i * j
ret[i] %= 10007
end
end
671 ms
まとめ
- 遅い遅いと言われていますが、本当に遅いのを実感しました
- 競技プログラミングで
Ruby
を使用している方は、何かの修行なのかもしれませんね