プログラム言語の処理速度ワールドカップ
今朝は5時半に起きました。
昨日やってみたCythonとGO言語の速度対決
を他の言語でもやってみたくなりました。題して「プログラム言語の処理速度ワールドカップ」です。サッカーのワールドカップは2日間お休みなので時間があるためです。
使ったことのある言語に昨日のテストプログラムを写経して試してみました。
まずは、結果から
優勝はCythonで準優勝はGO言語でした。
日本代表のRubyはPerl を抜いてベスト8に入っています。「おめでとう」
C言語とRustは、急いて作ったので何か間違っているかもしれません。
VAR判定が必要かもしれません。
とりあえず、プログラムを載せておきます。
Node.js
function sumtest(n) {
console.log("node.js sumtest("+ n +") が呼ばれた")
let sum = 0
for (let i = 1; i < n+1; i++) {
sum += i
}
return sum
}
console.time("sumtest")
const n = 100000000 // 1億までの和
const s = sumtest(n)
console.timeEnd("sumtest")
console.log("sumtest(" + n +") = "+ s + "\t")
PHP
<?php
function sumtest($n) {
printf("PHP sumtest(%d) が呼ばれた", $n);
$sum = 0;
for ($i = 1; $i < $n+1; $i++) {
$sum += $i;
}
return $sum;
}
$st = microtime(true);
$n = 100000000; // 1億までの和
$s = sumtest($n);
$d = microtime(true) - $st;
printf("sumtest(%d) = %d\t経過時間 = %f\n", $n, $s, $d);
Perl
use Time::HiRes qw( gettimeofday tv_interval );
sub sumtest {
local($n) = @_;
printf("PHP sumtest(%d) が呼ばれた", $n);
$sum = 0;
for ($i = 1; $i < $n+1; $i++) {
$sum += $i;
}
return $sum;
}
$st = [gettimeofday];
$n = 100000000; # 1億までの和
$s = sumtest($n);
$d = tv_interval($st);
printf("sumtest(%d) = %d\t経過時間 = %f\n", $n, $s, $d);
Rust
use std::time::{Instant};
fn sumtest(n: i64) -> i64 {
println!("Rust sumtest({}) が呼ばれた", n);
let mut sum: i64 = 0;
for i in 1..n+1{
sum += i;
}
return sum;
}
fn main() {
let st = Instant::now();
let n: i64 = 100000000; // 1億までの和
let s = sumtest(n);
let end = st.elapsed();
println!("sumtest({}) = {}\t経過時間 = {}.{:03}\n", n, s, end.as_secs(), end.subsec_nanos() / 1_000_000);
}
Ruby
def sumtest(n)
printf("ruby sumtest(%d) が呼ばれた", n)
sum = 0
for i in 1..n do
sum += i
end
return sum
end
st = Time.now
n = 100000000 # 1億までの和
s = sumtest(n)
d = Time.now - st
printf("sumtest(%d) = %d\t経過時間 = %f\n", n, s, d)
のような感じです。
明日に続く
いいなと思ったら応援しよう!
開発のための諸経費(機材、Appleの開発者、サーバー運用)に利用します。
ソフトウェアのマニュアルをnoteの記事で提供しています。
サポートによりnoteの運営にも貢献できるのでよろしくお願います。