現在のページ:ホームビギナーズLabVIEWとは?>コンパイラ

グラフィック・コンパイラ


NI社はCで書いてコンパイルしたプログラムと同等の速度なんて豪語しています。

確かにプリミティブ関数(それ以上中を見られない最低位の関数)は速いです。
Pentium/200MHzのWindows95マシンとLabVIEW4.0.1/Jで、100000個の倍精度浮動小数点データ(1個あたり8バイト)をソート(値の小さい順に並べ替える)したところ、0.77秒だったという記録があります。(古いデータ(^^;))

実行時には大きなランタイムライブラリを使いますが、Visual-CだってMFCやらなんやらのランタイムを抱えてるんだから似たようなもんです。体感上Cコンパイラの70%程度のスピードは出ているんじゃないかと思います。

吐き出したマシンコードをCと比べてみると、処理の実態部分はあまり変わりませんが、ブレークボタンやデバッグコードなど、プログラマが意図していないけどデフォルトで必要なコードが含まれている分、少し大きくなっているようです。

さらにWindows版のバージョン5.0以降では、マルチスレッドに対応したことで、さらに高速な処理が可能になりました。
バージョン6以降もFFTや数値関数の速度はどんどん改良されていて、DFT(2のべき乗でないときのフーリエ変換)はとんでもなく速いです。

バージョン7.1以降はスレッドの数が増え、Pentium4のハイパースレッディングにも対応し、ますます磨きがかかっています。

Pentium3/1.13GHz、メモリ512MBのWindowsXPマシンで、LabVIEW7.1/Jを使って1メガポイント(1000000点)の倍精度浮動小数点データをDFTしたところ、839msでできました。100kポイントでは50msくらいで終わっちゃう。


安全なのがいいです

LabVIEWでは開発中にもプリコンパイルしているらしく、誤りがあるとすぐわかりますし、そのまま実行してもシステムをぶっ飛ばす危険はありません。エラーウィンドウが開いてエラー個所を特定してくれます。コンパイル自体のスピードは速いほうです。

ポインタの概念がないので、メモリ利用効率が悪いのが難点ですが、それはJavaにもみられるように安全性を高める結果になっています。

デバッグ中にプローブを当てて値を確認したり、ブレークポイントを自由に設定したり、モジュールごとの実行時間を集計したりできます。データとその流れ方をモニタするモードもあります。


データの流れをモニタしている様子


コンパイラでありながら、インタープリタ的な安全性と開発のし易さを備えています。


現在のページ:ホームビギナーズLabVIEWとは?>コンパイラ