Benchmarks

ここではFireDucksの性能ベンチマークの結果を紹介します.

サーバースペック

  • CPU: Intel(R) Xeon(R) Gold 5317 CPU @ 3.00GHz x 2sockets (合計48HWスレッド)
  • メインメモリ: 256GB

TPC-Hを用いたデータフレームライブラリの比較

ベンチマークのソースコード

以下のグラフはTPC-Hベンチマークに含まれる22種類のクエリでの4つのデータフレームライブラリ(pandas, modin, polars, fireducks)の比較を示しています.縦軸はpandasに対して何倍速いか(実行時間が短いか)を対数軸で示しています.1より大きい場合はpandasより速いことを示しています.データサイズを表すScale Factorは10(約10GB程度のデータセット)で,ファイルIO以外の時間を測定しています.

22クエリの平均でのpandasからの速度向上は,Modinは1.3倍,Polarsは13倍,FireDucksは18倍でした.

polars-tpch-sf10

利用した各ライブラリのバージョンは以下になります(計測時の最新版).

  • pandas: 2.2.0
  • Modin: 0.26.1
  • Polars: 0.20.7
  • FireDucks: 0.9.8

次にScalar Factor(sf)を10, 20, 50にしてデータサイズを大きくした場合にPolarsとFireDucksの比較結果を示します.縦軸はPolarsに対してFireDucksが何倍速いかを示しています.平均ではFireDucksが1.3倍(sf=10), 1.3倍(sf=20), 1.7倍(sf=50)高速となっています.

polars-tpch

ベンチマークコードについて

このベンチマークはpolars/tpchをベースにしています.polars/tpchはpolars向けには全22クエリがありますが,pandasやmodin向けには一部しかありませんでしたので,今回はFireDucks開発チームでpandasを用いてクエリを実装し,それをimport hookを用いてFireDucksで動かしました.これらのクエリは,pandasやmodinで動かす際にも polars/tpchが提供してないクエリに利用しました.

各クエリのソースコードはこちらで公開しています.

TPCx-BBを用いた性能評価

本節ではTPCx-BBを用いたpandasとFireDucksの比較を示します.TPCx-BBは機械学習を用いたデータ分析やその前処理に関するクエリが含まれています. 本評価ではFireDucks開発チームで実装したTPCx-BBのpandas実装を用いて,pandasおよびFireDucksで測定を行いました.ファイルIOも計測範囲に含まれています.

TPCx-BBのでは,FireDucksはpandasに対して最大17倍,平均で6.7倍高速です.

TPCx-BB

測定に用いたバージョンは以下の通りです.

  • pandas-2.1.4
  • fireducks-0.9.3