この頃 流行りの 言語たち(他)でベンチマーク (Dart, Go, Julia, Nim, Python, Rust 他)
自分が気になっている、主に最近のプログラミング言語でベンチマークをやってみました。方法は、42番めのフィボナッチ数列の値を計算する時間を測るだけです。フィボナッチで各種言語をベンチマーク - satosystemsの日記 を参考にさせていただきました。
- 注意
- 筆者はPythonくらいしか使ったことない素人です
言語紹介
測定した言語は、以下の11種類です。
選択基準は、
- メジャーっぽい
- 自分が知っていた
- 自分が気になった
- 環境構築が楽だった(or すでに構築済みだった)
- 怖くない
などです。気分と手間で選びました。
測定条件
上記の言語でフィボナッチ数列の42番目の数を求める時間を測りました。42番目なのはなんとなく全部の言語がまともに測定できる範囲に収まったからです*1。
あと、今回はコンパイルが必要な言語はコンパイル時間も測りました。 コンパイル時間もコードを書くときには重要な要素だと思うので、参考にしていただければ。
2015年2月22日 10時16分 追記
Cの最適化オプションを-O3
にするとNimよりCの方が速いとのことです。この記事では-O2
で実験していました。申し訳ありません。-O3
オプション付きでコンパイルすると、NimよりもCの方が若干速くなります。
Nim vs C 追実験した.10回実行して平均と分散を計算.C言語が早い(差は小さいが統計的に有意).
Nim -d:release 平均4.2199秒 分散0.0018
C言語 -O3 平均 4.0689秒 分散0.0008
— ᴛ. ᴍᴀᴇʜᴀʀᴀ (@tmaehara) February 22, 2015
*1:他にも何通りか試しました。
VimでNim言語を書く設定
Nimの紹介 − Python風静的型付言語 〜コンパイラと型推論を添えて〜
はじめに
Nim (旧称: Nimrod) というVimに似た名称のPython風構文な静的型付言語があります。 先日Twitterで存在を知り、少し触ってみました *1。 書きやすい上に実行速度がとても速く(単純な処理でgo, rustより早くC並)、非常に気に入ったので簡単にインストール方法などを紹介したいと思います。
Nimの特徴
主に公式ページの記述から、主観で特徴を列挙します。
言語の特徴
コンパイラの特徴
- Linux, BSD, Mac OS X, Windowsに対応
- 単一ファイルの実行バイナリを生成
- 一旦Cのコードに変換し、そこからネイティブコードを生成してるらしい
- C、C++, Objective-C, JavaScriptのコードに変換することも可能
いい感じです。 特徴だけ眺めるとまるでPython風構文のC++ですね! 競合する言語は、有名ドコロだとC++, Rust, Go, Objective-Cなどでしょうか。
日本語の情報は少ないのですが、旧称のNimrodで検索するとブログ記事を書いてくださっている方もいらっしゃいます。 Nimrod Advent Calendar jp: 2011 : ATNDなどもありました。
*1:公式のチュートリアルの前半 ((後半はこちら) と Nim by Example を眺めてみた程度