سلام به همه. امروز میخوام تو این نوشته یه بررسی خیلی کلی روی Bunjs داشته باشم.
اول که باید ببینیم این Bun.js چیه و چیکار میکنه.
اگه بخوام یه تعریف کلی از Bun.js بگم، میشه گفت: bunjs یه runtime برای کد های javascript هست برای اجرا کردن کد ها خارج از مرورگر.
حالا با توجه به اینکه runtime های مختلفی برای JavaScript وجود داره مثل Nodejs و Denojs چرا ما باید از Bunjs استفاده کنیم؟
طبق ادعایی که تو داکیومنت Bunjs شده اگه شما یه سرور با این پلتفرم داشته باشید، در ثانیه بیشتر از ۶۶۰۰۰
درخواست رو بهتون جواب میده و این در حالیه که Nodejs کم تر از ۱۴۰۰۰ درخواست رو در ثانیه جواب میده. همین برام جذاب شد که برم تست کنم ببینم داستان چیه و آیا این چیزا که میگن درست یا نه ( تو یه فیلی میگفت: این دروغا که میگی راسته؟)
تو قدم اول رفتم bunjs رو نصب کردم. نصبش خیلی خیلی راحت بود. فقط دستور زیر رو زدم و نصب شد:
curl -fsSL https://bun.sh/install | bash
وقتی نصب کامل شد فقط باید سیستم رو ریاستارت کرد تا کامند bun توی ترمینال در دسترس باشه.
حالا یه سرور کوچیک با خود bun درست کردم.
توی تصویر زیر میتونید ببینید
برای این سرور خیلی ساده بیاید یه بنچ مارک بگیریم با ab . میتونید با این دستور یه بنچ مارک با ab بگیرید:
ab -k -c 350 -n 20000 127.0.0.1:3000/
نتیجه رو میتونید تو تصویر زیر مشاهده کنید:
به نظر خیلی جذاب میاد این آمار.
حالا بیاید یه سرور با express درست کنیم و این تست رو با Nodejs و Bunjs روی همون سرور بریم ببینیم داستان چیه. اون سرور خیلی کوچیک و ساده رو شما میتونید تو تصویر زیر ببینید:
همینجا باید این نکته رو بگم که نصب پکیج ها با استفاده از bun خیلی سریع تر از npm انجام میشه (البته هیچ اثباتی برای حرفم ندارم چون فقط دیدم خیلی سریع نصب شد) حالا بیاید نتیجه بنچ مارک رو ببینیم:
حالا بیاید همین تست رو برای همین سرور توی Nodejs بگیریم ببینیم داستان چیه. نتیجه تست رو میتونید توی تصویر زیر ببینید:
نتیجه خیلی جذابه. البته مقایسه این اعداد و ارقام رو به خودتون میسپارم.
حالا سواب اصلی اینه که آیا ما باید از bunjs استفاده کنیم یا نه؟ جواب به این سوال به نظرم خیلی سخته. ما نمیدونم آینده Bunjs قراره چی بشه یا نمیدونیم Bunjs قراره مثل Nodejs طرفدار های زیادی داشته باشه یا نه. من فقط میتونم بگم خیلی باحال بود استفاده کردن از Bunjs. البته که من هنوز توی پروژه های بزرگ و بلند مدت ازش استفاده نکردم اما همین چند تا پروژه کوچولو که باهاش زدم برام جذاب بود.