コンテンツにスキップ
EN / JA

ベンチマーク


zenpix と Sharp を比較するとき、wall-clockCPU user の2軸で見ることが重要です。

指標意味zenpix の立ち位置
wall-clock処理が完了するまでの実時間Sharp がリード(単発リクエストなら Sharp が速い)
CPU userプロセスが消費した全コアの合算 CPU 時間zenpix が大幅に小さい

CPU user が重要な理由: 2〜4 コアの VPS で複数リクエストを同時処理するとき、CPU user の差はコアの奪い合いとなり他リクエストの遅延に直結します。


条件: 3840×2160 PNG → 1920×1080 AVIF(quality=60)
環境: macOS aarch64(Apple M4 Pro)、イラスト系フィクスチャ(bench_chara_chika.png
バージョン: zenpix 0.8.0

ツールwall-clockCPU userファイルサイズ
Sharp quality=60(libvips 自動スレッド)0.422s2.630s63 KB
zenpix speed=10(シングルスレッド)0.512s0.530s106 KB
zenpix speed=6(シングルスレッド)0.992s1.000s73 KB
zenpix speed=6(threads=14)0.610s1.060s73 KB

マトリクスベンチ(bench/bench.ts)

Section titled “マトリクスベンチ(bench/bench.ts)”

条件: PNG decode → Sharp で代表解像度へリサイズ → AVIF encode(quality=60 / speed=6)
ratio = Sharp 中央値 ÷ zenpix 中央値(1 超なら zenpix が速い)

3 回計測、各セルで 3 値の中央値を採用。2026-05-04 計測、zenpix 0.4.0。

フィクスチャFHD(ratio)WQHD(ratio)4K(ratio)
bench_input(タイル系)0.260.250.24
bench_chara_chika1.351.261.21
bench_chara_kanata1.361.271.21
bench_landscape_dark1.131.200.97
bench_landscape_impasto1.471.371.44
bench_landscape_light1.030.930.79
フィクスチャFHD(ratio)WQHD(ratio)4K(ratio)
bench_input0.260.180.15
bench_chara_chika0.600.440.41
bench_chara_kanata0.630.460.38
bench_landscape_dark0.550.510.38
bench_landscape_impasto0.570.440.37
bench_landscape_light0.530.460.35
フィクスチャFHD(ratio)WQHD(ratio)4K(ratio)
bench_input0.330.220.19
bench_chara_chika1.010.770.69
bench_chara_kanata1.000.760.70
bench_landscape_dark0.690.760.54
bench_landscape_impasto0.950.720.78
bench_landscape_light0.740.640.48

ユースケース推奨
単発リクエストの wall-clock 優先Sharp
VPS・少コア環境での同時処理zenpix(CPU user が約 40%)
CPU budget を per-call でコントロールしたいzenpixthreads オプション)
イラスト・キャラ系の AVIF 変換(VPS)zenpix(ratio 1.2〜1.5)

速度だけでなく、同じ quality=60 でも zenpix はイラスト素材の微細なトーンを保持します。Sharp はファイルサイズを小さくするために繊細なグラデーションをより積極的に間引きます。

Sharp (quality=60)zenpix (quality=60)
Sharp 出力zenpix 出力

パステル調ビーチイラスト。Sharp はニュアンス部分を間引いてファイルを小さくし、zenpix はやや大きくなる代わりに微妙なトーンを保持します。


Terminal window
npm run build
npx tsx bench/bench.ts
BENCH_FIXTURES=bench_input,bench_chara_chika npx tsx bench/bench.ts
npm run bench:threads
npm run bench:quality