【ToDo】ソフトウェアテストの例題
【関数型言語】Haskell のテストツール
stack を使ってプロジェクトを作成すると、それだけで test ディレクトリが作成され、stack test するとテストが実行できる。いったい何をどうテストしているのか?
stack new hello
stack build
stack test
また、haskell で使えるテストツールとして
- HSpec
- HUnit
- QuickCheck
HSpec は BDD なツール、HUnit はユニットテスト用、QuickCheck はテストデータ・テストケースまで自動生成してくれるらしい(@_@)
これから使い方を調べて使ってみる予定。
インストールの仕方だが、stack の設定ファイル1行追加するだけでよいらしい。
記事通りに、hello.cabel の buld-depends に hspec の1行を追加し、
build-depends:
base >=4.7 && <5
, hspec
stack test を実行したところ、いろいろ必要なものを自動的にダウンロードし、自動的にテストの実行まで無事に完了した。ダウンロード中のメッセージから、HUnit と QuickCheck もちゃんとダウンロードされていることを確認できた。
とりあえず、下記の記事を真似て、動かしてみる。
【関数型言語】処理速度とメモリ使用量
処理速度
超大作。途中に各言語のベンチマークがある。
-
効率の面において、関数型言語はC++にはまったく歯が立ちません。C/C++は最速です
-
C++には叶いませんが、JavaやC#、JavaScriptなどのメジャーな言語と同程度か、それより少し遅いくらいのパフォーマンスが出ます
-
Ruby/Python/PHPなどのスクリプト言語をはるかに上回ります
メモリ使用量
個人的には、「データが全て不変(immutable)って、無茶無茶メモリを食うんじゃ?!」と思ったので、実際のところどうなのか知りたかった。
だが。
関数型言語に関する記述・データが見つからない。
参考
「関数型言語でもJavaやpython などと同様に、データが不要になったらガベージコレクションされる」というのはわかった。ただ、前述のように、「変数を変更するたびに新しい変数を作る」ことが、ほかの言語と比較してどのくらいメモリを使うのか、しりたいところだ。