エンジニアなプログラマ

プログラミング(特にvala言語関連)の話題を取り上げていきます。

現在、新しいクラス図描画ソフトを開発中! http://gridraw.com/

Vala言語の特徴 (2)

前回に引き続き、vala言語の特徴を紹介する。

なお、公式ページはこちら。 https://wiki.gnome.org/Projects/Vala

ネイティブなバイナリを生成できる

valaのソースコードから、最終的にはネイティブなバイナリコードを生成できる。 PerlRubyのようなインタープリターではないし、JavaのようなVMも不要だ。

「最終的には」と述べたのは、valaコンパイラが、途中C言語のソースを介すからだ。 valaコンパイラは、

  1. valaソースコードをCソースコードへ変換
  2. CソースコードをCコンパイラ(GCC)がコンパイル

という手順を経てネイティブなバイナリコードを生成する。

ネイティブであることは、実行速度やメモリ利用効率の面から有利だ。

https://code.google.com/p/vala-benchmarks/wiki/BenchResults

上記ページにはC++、Mono、C、valaの速度比較結果がある。 (残念ながらメモリ使用量の結果はtimeコマンドのバグ(?)で存在しない)

この結果から、ざっくり概観を得る為に言語ごとに速度値を平均化した。さらに、その平均値をC言語を1として比較してみた(C比)。

言語 平均値 C比
C++ 22.47 1.07
Mono 38.28 1.82
C 20.98 1.00
Vala 23.04 1.10

valaはC比1.1倍だ。

なお、ページは異なるが、JavaPythonRubyも比較してみよう。

http://benchmarksgame.alioth.debian.org/u32/benchmark.php?test=all&lang=java&lang2=gcc&data=u32
http://benchmarksgame.alioth.debian.org/u32/benchmark.php?test=all&lang=python3&lang2=gcc&data=u32
http://benchmarksgame.alioth.debian.org/u32/benchmark.php?test=all&lang=yarv&lang2=gcc&data=u32

これらのページを見ると、JavaはC比2倍、Pythonは34倍、Rubyは44倍だ。

以上より、valaの処理速度C比1.1倍という結果が、いかに高速か分かるだろう。 特に、最新の言語機能を使用できて、この処理速度を実現できるところが魅力的だろう。


現在、valaによるアプリケーションを開発中です。 興味があれば登録してみてください。 http://gridraw.com