Webpackの70倍!Go言語で書かれたJavascriptバンドラー「esbuild」をベンチマークテストしてみた

esbuild
https://github.com/evanw/esbuild/

esbuildの特徴

複数モジュールの依存関係を解決し、1つにまとめるバンドラーは、現代のフロントエンド開発においてなくてはならないツールの1つ。


The State of JavaScript

上位5つに人気が集中し、なかでもWebpackのシェアは実に約60%に達しています。

今回ご紹介する「esbuild」は、Go言語で書かれた高速なバンドラーで、これらメジャーなツールとの性能比較(ベンチマークテスト)をやってみました。

公式のベンチマーク結果

計測方法は、three.jsライブラリを10回複製し、キャッシュなしで単一のバンドルをゼロから構築しています。なんと、Webpackに比べて85倍(ITnews計測では約70倍)もビルド時間が圧縮されるなど、クレイジーな速度を誇っています。

なぜ、早いのか?

・Go言語で書かれている
・パース、プリンティング、ソースマップの処理が完全に並列化されている
・すべての処理が、非常に少ないパスで実行され、コストのかかるデータ変換が不要
・コードは速度を重視し、不必要なアロケーションを回避している

実際に動かしてみる

$ git clone https://github.com/evanw/esbuild.git
$ cd esbuild
$ make bench-three

esbuildのブランチにある計測スクリプトを実行します。

Rollup.js

Built in 49s

real 49.95
user 54.59
sys 3.99

FuseBox

Built in 2m 56s 602ms

real 184.63
user 229.76
sys 15.46

Parcel

Built in 142.49s

real 154.52
user 305.49
sys 29.69

Webpack

Built in 56.95ms

real 58.75
user 67.11
sys 4.45

esbuild

Built in 770ms

real 1.28
user 2.49
sys 0.70

ビルド時間を見れば、結果は一目瞭然です。

すでにバンドラーのまわりにはエコシステムが確立され、単純な速度比較だけでは技術が選ばれる理由にはならないでしょう。それでも、かなりショッキングな性能差であるのは事実であり、それとともに、Go言語の可能性を感じさせてくれる結果ではないでしょうか。


コメントを読む

新着ピック  






















新着ニュース

[アップデート]VPCエンドポイント作成時にタグ付けできるようになりました | Developers.IO

SpaceX、宇宙船「Crew Dragon」による民間宇宙旅行を提供へ

SpaceXとSpace Adventuresが提携し2021年にも宇宙旅行を提供 | TechCrunch Japan

SpaceXとSpace Adventuresが提携し...

TechCrunch Japan / 2時間前


グーグルのゲームストリーミング「Stadia」、サムスンなどのスマホにも対応

新型の低価格「iPhone」にも新型コロナウイルスの影響か

【読書感想文】ドメイン駆動設計入門 ボトムアップでわかる! ドメイン駆動設計の基本 | Developers.IO

「Teslaを含む最先端AI開発組織は規制されるべき」とイーロン・マスク氏

ローソン、Apple Pay支払いでdポイント7倍キャンペーンを開始

「7畳の学生寮」に住む大学生が増えている、いくつかの理由

Facebookが読みたい最新、既読投稿をタブで開ける新フォーマットをテスト中 | TechCrunch Japan

小規模ビジネス向けのSumUp Cardがマスターカードの協力で提供開始 | TechCrunch Japan

ロボットが変える農業の未来--オハイオの屋内農場「80 Acres Farms」を訪問

Google Drive、OneDrive、Box、Dropbox——進化を続ける4大クラウドストレージの機能を徹底解説

格安ホテルOyoの2019年3月期決算は売上高約230億円増加も損失も6倍以上に拡大 | TechCrunch Japan

Apple製UWBタグ「AirTag」は2020年半ばに発売? 著名アナリストが予想

日本のポッドキャスト大賞を決めるJAPAN PODCAST AWARDS 2019、ノミネート20作品を発表

アフリカのZindiは、同地の複雑な諸問題をAIと機械学習で解決する | TechCrunch Japan

Pythonでインスタンス変数の入力値をバリデーションする方法 | Developers.IO

dポイントが「Apple Wallet」に対応 iPhoneやApple Watchを使ってローソンでポイントがたまる

NTT東西、従来より10倍速い光回線サービス「フレッツ 光クロス」4月開始へ

もっと見る
記事をPICKする
会員登録
Register
記事をPICKする

会員登録すると、もっと便利に利用できます。