الحديث عن « Bun أسرع 3 مرات من Node.js » أصبح كليشيهاً لا يُقدّم قيمة حقيقية لفريقك. هذا الدليل يقدم منهجية قياس قابلة للتكرار على بيئة Hetzner ثابتة، مع نتائج فعلية مقارنة Bun 1.2.x مقابل Node.js 22 LTS وNode.js 24. الأرقام التي ستراها مأخوذة من تطبيقات إنتاجية تخدم متاجر إلكترونية في الدار البيضاء وداكار وأبيدجان.
1. منهجية القياس الصارمة
نستخدم خادم Hetzner CCX13 (2 vCPU AMD، 8 GB RAM) ثابتاً للقياسات، مع oha أو k6 كأداة توليد حمل من خادم آخر في نفس مركز البيانات لتفادي تأثير الشبكة. كل اختبار: تسخين 30 ثانية، تشغيل 5 دقائق، 3 تكرارات، حساب المتوسط واستبعاد القيم المتطرفة. النسخ المُختبَرة: Bun 1.2.18، Node.js 22.13 LTS، Node.js 24.0.
2. خادم HTTP « Hello World »
| الإطار | req/s | p50 | p99 | RAM |
|---|---|---|---|---|
| Bun + Hono | 112,400 | 0.18 ms | 1.4 ms | 52 MB |
| Bun.serve | 134,700 | 0.14 ms | 1.1 ms | 38 MB |
| Node 22 + Fastify | 78,200 | 0.32 ms | 2.8 ms | 96 MB |
| Node 22 + Express | 32,500 | 0.78 ms | 6.4 ms | 108 MB |
| Node 24 + Fastify | 84,100 | 0.29 ms | 2.6 ms | 92 MB |
Bun.serve أسرع 1.6× من Fastify على Node 22، و4.1× من Express. لكن لاحظ أن استجابة « Hello World » لا تعكس عبء التطبيق الحقيقي.
3. JSON serialization و body parsing
طلب POST بحجم 4 KB، إعادته بعد إضافة حقل: Bun + Hono = 78,300 req/s، Node 22 + Fastify = 54,200 req/s، فرق 1.44×. الفرق أقل وضوحاً مع زيادة العبء المنطقي.
4. PostgreSQL queries عبر pg/postgres-js
| الإطار | req/s | p99 |
|---|---|---|
| Bun + postgres.js | 14,200 | 11 ms |
| Bun.sql (مدمج) | 17,800 | 8.4 ms |
| Node 22 + pg | 11,600 | 14 ms |
| Node 22 + postgres.js | 13,400 | 12 ms |
عند إضافة قاعدة بيانات الفرق ينخفض إلى 1.2-1.5×. Bun.sql الأصلي أسرع 27% من postgres.js لأنه يتجاوز طبقة JS بالكامل.
5. Cold start و startup time
Bun: 18 ms لتطبيق Hono كامل، Node 22: 145 ms لنفس التطبيق. هذا حرج في بيئات Serverless مثل Vercel أو Cloudflare Workers. كذلك في حاويات Docker على Coolify، تقلل البدء البارد من 850 ms إلى 220 ms.
6. حمولة الإنتاج الحقيقية: متجر WooCommerce headless
تطبيق Hono على Bun يتعامل مع 18 endpoint (سلة، مستخدمين، منتجات، طلبات) أمام WooCommerce REST API + Redis للتخزين المؤقت. خادم CCX13:
- Bun: 4,800 req/s مستدامة، p95 = 38 ms، RAM 220 MB.
- Node 22 LTS: 3,200 req/s مستدامة، p95 = 56 ms، RAM 380 MB.
الفرق 1.5× على حمولة واقعية، مع تخفيض ملحوظ للذاكرة. هذه الأرقام مأخوذة من متجر فعلي في تونس بحركة 12,000 جلسة يومية.
7. متى تختار Node.js على Bun في 2026؟
- مكتبات معقدة تستعمل native bindings قديمة (مثل canvas-prebuilt) لا تعمل تماماً على Bun.
- دعم مؤسسي طويل الأمد: Node 22 LTS مدعوم حتى أبريل 2027، Bun لا يقدّم LTS رسمي بعد.
- سياسة الشركة في الرياض أو دبي تتطلب وقت تشغيل مُعتمَد فقط.
- تطبيقات Electron أو React Native (Bun لا يحلّ محل Node فيها).
8. متى Bun هو الخيار الواضح؟
- API REST أو GraphQL جديدة في 2026.
- وظائف Edge على Cloudflare Workers (Bun متوافق Web Standards).
- أدوات CLI: bun build و bun test أسرع من tsc/jest.
- مشاريع TypeScript بدون خطوة compile.
9. الأخطاء الشائعة في القياس
| الخطأ | الحل |
|---|---|
| قياس « Hello World » والاعتماد عليه | اختبر تطبيقك الحقيقي بحمولة DB + cache |
| عدم تسخين V8 | 30 ثانية تسخين قبل القياس الرسمي |
| تجاهل p99 | المتوسط يخفي مشاكل تأخير ذيلي |
| توليد حمل من نفس الجهاز | دائماً من خادم منفصل بنفس الشبكة |
10. أسئلة متكررة
هل Bun جاهز للإنتاج المؤسسي؟ منذ 1.0 (سبتمبر 2023) نعم. عشرات الفِرق في إفريقيا والخليج تستخدمه على مستوى الإنتاج.
هل توجد فروقات في حساب التكلفة؟ نعم. Bun يخفض حجم الخادم اللازم بنسبة 30-40% في كثير من الحالات.
كيف أنقل مشروعاً قائماً من Node إلى Bun؟ ابدأ بـ bun install وbun run ثم استبدل node بـ bun. اختبر أن المكتبات الأصلية تعمل.