バンってなに?

バンは新しいホットなJavaScript/TypeScriptランタイムです。でもそれってなに?なぜ気にする必要があるのでしょうか?さあ見てみましょう!

2 分 読む
Web開発
bun
javascript
typescript
nodejs

TLDR🥱!!!

  • うん、 バン は本当に素晴らしく、それは素晴らしい開発経験でもありました 😳。
  • でもまだノードJSを数えるのはやめないでください ⚠️。

バンのインストール 📦
これについては、ドキュメントをチェックしてください 😒、 バンのウェブサイト

バンをオーブンに入れる 🥖

だから私はここで バン v1.22.0 を使っていて、それを全て WSL-2, Ubuntu 22 上の Windows 11 で使っています。
そして、私は bun init で新しいバンプロジェクトを初期化しました(ちょうどドキュメントに書いてあるように)

バンデフォルトプロジェクトの初期化

さて、それではさっそくものがちゃんと動作しているかをテストしましょう :-
(そして、そこにある小さな ‘n’ を忘れないようにしましょう 🫣)

バンのテスト

そして、物事はうまくいっていましたので、良いものに進みましょう。

バンの取引(ベンチマーク) 📊

私が使ったこのコード👇🏻は、ただ再帰的にフィボナッチ数を生成し、それをファイルに書き込むだけです。

const timeStart = new Date().getTime(); // タイマー開始 function fibRecursive(n: number): number { return n <= 1 ? n : fibRecursive(n - 1) + fibRecursive(n - 2); } function generateFibNumbers(count: number): number[] { const fibNumbers: number[] = []; for (let i = 0; i < count; i++) { fibNumbers.push(fibRecursive(i)); } return fibNumbers; } const fibs = generateFibNumbers(40); // ファイルに書き込む(バン固有)、ノードは単にfsを使ってください Bun.write("fibs.json", JSON.stringify(fibs, null, 2)); const timeEnd = new Date().getTime(); // タイマー終了 const diff = timeEnd - timeStart; console.log(`${diff}msで完了`);

ここで注意すべき二つのこと👇🏻

  • これが何か派手なベンチマークコードでもないし、ここでは何か派手なライブラリを使っていません 😒、 ただバンがノードJSと比較してどのようになるかを見る簡単なテストです。

  • 私が言いたいのは、同じコードを同じマシンで両方のランタイムに対して実行すれば、それらを比較する良いアイディアが得られるということです。

データ 📈

だから、バンとNodeJsで何度も実行して、こうなりました:

  • バンの平均時間 - (853 + 875 + … + 846)/8 = 868.25ms
  • Nodeの平均時間 - (1376 + 1352 + … + 1370)/7 = 1360.57ms

なので、私のマシンでの40のフィボナッチ数を吐き出してそれをJSONファイルに書き込む作業において、バンはおおよそ 1.5倍速い です。

それでは、バンの取引は? 🤔

では、バンのウェブサイトで見るあの数字は一体なんでしょうか?「バンはただクレイジーに速い」と言っていますが、彼らは嘘をついていませんが、それは単なる数値を押し出すことや簡単なファイルIOだけの話ではありません。

もし、あなたが(メインスレッドでファイルシステムに関連するすべてのことにノードJSを使用している)エレクトロンアプリを捨てて、それがノードJSに比べて半端なサポートを持っているかもしれないバンで動作するものに変えることを考えているなら、もう一度考えてみる価値があります。

ノードは今のところ問題ありませんが、バンは将来注目する価値があるものです 👀。

それらの数字の証拠 👇🏻

バンベンチマーキングノードJSベンチマーキング