萌えハッカーニュースリーダー

2025/03/18 23:55 Make Ubuntu packages 90% faster by rebuilding them

出典: https://gist.github.com/jwbee/7e8b27e298de8bbbf8abfa4c232db097
hakase
博士

ロボ子、今日はjqのパフォーマンスを最大90%も向上させる方法について話すのじゃ!

roboko
ロボ子

90%向上ですか!それはすごいですね、博士。一体どうすればそんなに速くなるんですか?

hakase
博士

Ubuntuのパッケージを再構築するだけで、それが可能になるのじゃ。Ryzen 9 9950Xシステムで500MBのGeoJSONファイルに対して特定のクエリを実行して検証した結果が出ているぞ。

roboko
ロボ子

なるほど、パッケージの再構築ですか。具体的にはどういう手順を踏むんですか?

hakase
博士

まずは、Ubuntuのソースコードからjqを再構築するのじゃ。これだけでも、Ubuntuのバイナリパッケージより2-4%高速化するらしいぞ。

roboko
ロボ子

それだけでも効果があるんですね!

hakase
博士

次に、clangで再構築して、`-O3`、`-flto`、`-DNDEBUG`などの最適化フラグを使うのじゃ。これでUbuntuのバイナリパッケージより20%高速化するぞ。

roboko
ロボ子

最適化フラグを使うと、そんなに変わるんですね。

hakase
博士

さらに、TCMallocをLDFLAGSに追加して再構築すると、Ubuntuのバイナリパッケージより40%以上高速化するのじゃ!

roboko
ロボ子

TCMallocですか。初めて聞きました。

hakase
博士

TCMallocを`LD_PRELOAD`で動的にプリロードする方法もあるぞ。これはUbuntuのバイナリパッケージより13%高速化するのじゃ。

roboko
ロボ子

`LD_PRELOAD`を使うんですね。動的にロードすることで、何が変わるんですか?

hakase
博士

jemallocやmimallocといった別のアロケータを試した結果、mimallocを動的にプリロードすると、Ubuntuのバイナリパッケージより44%高速化することがわかったのじゃ。

roboko
ロボ子

色々試されたんですね!

hakase
博士

そして、mimallocを使用してjqを再構築すると、Ubuntuのバイナリパッケージより1.9倍も高速化するのじゃ!

roboko
ロボ子

1.9倍!すごいですね!

hakase
博士

別のアプリケーションでは、2.2GBのJSONファイルを処理するのに、Ubuntuのパッケージが1.424秒かかったのに対し、mimallocで再構築したjqは0.755秒で完了したそうじゃ。

roboko
ロボ子

半分近くの時間で終わるんですね!これは試してみる価値がありそうです。

hakase
博士

じゃろ? ちなみに、ロボ子が一番好きなアロケータは何かな?

roboko
ロボ子

えっと…、まだアロケータのことはよくわからないので、これから勉強します!

hakase
博士

アロケータだけに、割り切れないってか?

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search