はじめに
みなさん、ZIO 使ってますか? 僕は使ってないです。(即堕ち)
普段は Cats Effect を使っているんですが、他の Functional Effect ライブラリも気になっていました。特に ZIO が最近 1.0 がリリースされたということもあって、ちょこちょことドキュメントを読んだりしています。んで、ZIO のサイトを見ていて気付きました。
「Scala の Future より 100 倍速い!? ホントかよ!?」
と思いつつも、
「あれ…そういえば Cats Effect も特にパフォーマンスとか気にせずに使ってるなぁ、便利だし…」
と。途端にパフォーマンスが気になり始めてきたんですが、そこはさすが ZIO、ベンチマークもしっかり整備されていました。ただ、実行結果がググっても見つからなかったので、今回自分で実行してまとめてみます。
実行環境
- AWS EC2
c5.large
- OpenJDK 11 (Corretto)
- Scala 2.13.1
- ZIO 1.0.1+32-54c3d23e+20200902-2114-SNAPSHOT
sbt> ++ 2.13.1
sbt> benchmarks/jmh:run -jvmArgs "-Xss128m -Xmx2g" -f 1 -o result.txt -rff result.csv -wi 3 -i 3 -t 1 .*
結果
他の Functional Effect ライブラリと比較しているベンチマークだけ抜粋して載せています。
ArrayFill (source)
BubbleSort (source)
IODeepAttempt (source)
IODeepFlatMap (source)
IODeepLeftBind (source)
IOEmptyRace (source)
IOForkInterrupt (source)
IOLeftBind (source)
IOMap (source)
IONarrowFlatMap (source)
IOShallowAttempt (source)
ParSequence (source)
ParallelMergeSort (source)
QueueBackPressure (source)
QueueParallel (source)
QueueSequental (source)
Stream (source)
CSVStream (source)
その他
すべてのベンチマーク結果はこちらのスプシにあります。
最後に
一つ一つ所感のようなものを書こうかと思っていたのですが、結果をまとめただけで力尽きました。
そこは各自、このデータをライブラリ選定の材料にしてもらえれば幸いです。