3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Haskellを使ってRubyのクラスメソッドを書く(その4)まとめ

Last updated at Posted at 2018-05-13

目次

Haskellを使ってRubyのクラスメソッドを書く
(その1)FFI
(その2)FFI+JSON
(その3)FFI+MessagePack
(その4)まとめ <- ここ

##ベンチマークの結果
Ruby側で
data=[*1..1000].map(&:to_f)
の1000個の要素からなる配列用意しencode->(Haskell側)decode->2倍->encode->(Ruby側)decodeを100回繰り返した時間を測定しています。単位はミリ秒です。

全体(a) Ruby部分(b) (a)-(b)
FFI (その1) 5.8 1.6 4.2
FFI+JSON (その2) 298.8 40.6 258.2
FFI+MessagePack (その3) 72.4 4.3 68.1

(b)はRuby側だけの処理でencode->(Ruby側)decodeでHaskell部分を取り除いた時間
(a)-(b)は引き算してHaskell側だけの時間にした値です。Haskell側の処理がかなりかかっているようですので、改善の余地はありそうです。

FFIが一番高速で単純なデータ構造の場合はこちらが適しているようです。
MessagePackが健闘しており、複雑なデータ構造の場合は良さそうです。
(JSON, MessagePack共に) [[Double]] -> [(Int, Int, Double)]のような構造でも簡単に受け渡しできます

CPU Intel Core i7-2600 CPU 3.40GHz
Scientific Linux 7.3
GHC 8.2.2
Ruby 2.5.1p57
stack 1.6.5

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?