GitHub تخفض وقت الـ server-side rendering بنسبة 55% بعد انتقالها من CSS-in-JS إلى CSS Modules
حجم ملف CSS لم يكن هو ما يبطئ الصفحات، بل الحساب الذي يجري عليه أثناء التشغيل، والمتصفح يعالج CSS العادي أسرع من أي كود يولّده.
وسم
حجم ملف CSS لم يكن هو ما يبطئ الصفحات، بل الحساب الذي يجري عليه أثناء التشغيل، والمتصفح يعالج CSS العادي أسرع من أي كود يولّده.
بعض مشكلات الأداء ليست ضبطًا ناقصًا بل عيب توزيع موجود منذ السطر الأول، ولا يظهر إلا حين يكبر حجم الاستخدام.
عمل كان يتطلب كتابة assembly لكل معمارية أصبح ممكنًا داخل أدوات Go الرسمية، والحل جاء من إزالة معلومة من نظام الأنواع لا من إضافة أنواع جديدة.
عبارة "اجعله أسرع" رأي لا يمكن التحقق منه، أما رقم مستهدف عند الـ p75 فشرط يتحقق أو لا، وهو ما يسمح لـ agent بالعمل على ما يهم فعلًا.
المواقع ثنائية اللغة على الرابط نفسه لم تعد مضطرة للاختيار بين تخزين مؤقت صحيح ولغة صحيحة، وهي مشكلة شائعة في المواقع العربية الإنجليزية.
نجاح الـ agents في تحسين الكود لم يأتِ من قوة النموذج وحده، بل من وجود رقم آلي يحكم على النتيجة. والمهام التي لا تملك مقياسًا كهذا ما زالت تحتاج إلى إنسان يحكم عليها.
حين يُكتب الكود أسرع، ينتقل الازدحام إلى التحقق منه، والتحقق بند في الفاتورة يكبر وحده كل شهر، وأكبر توفير فيه جاء من إلغاء عمل لا حاجة إليه.
فرق كثيرة تدفع لخدمة بحث منفصلة بجوار قاعدة البيانات لأن Postgres كان ضعيفًا في هذا الجانب، وإن صمدت هذه الأرقام يضعف هذا المبرر كثيرًا.
القيمة الافتراضية التي توزّع الحمل بعدل هي نفسها التي استهلكت 6 جيجابايت من الذاكرة في خدمة واحدة، ولم يراجعها أحد لأنها افتراضية.
الرقم نفسه كان صحيحًا في المرتين، والإعداد هو الذي روى قصتين متعاكستين. أول سؤال أمام أي اختبار أداء ليس من فاز، بل كيف قيس.
خطة التنفيذ التي يختارها محرك قاعدة البيانات ليست الخطة المثلى، بل أفضل تخمين من إحصائيات قديمة، وهذا التخمين يمكن تصحيحه بالتجربة.
الترقية هذه المرة ليست السلوك نفسه بسرعة أعلى، فهناك افتراضيان تغيّرا ويطبقان دون أي إجراء، والحكم عليهما يأتي من قياس الأداء على كل تطبيق لا من ملاحظات الإصدار.
أكثر من 150 مللي ثانية خرجت من زمن الاتصال دون تغيير أي إعداد، وهو فرق يُحس أكثر حين يكون الخادم بعيدًا، ومعه حماية ما بعد الكم لمئات الآلاف من النطاقات.
فرق نُسب إلى اللغة كان في جزء كبير منه فرق إعداد، والإعداد نفسه لم يكن في مستودع المشروع أصلًا، بل في مكتبة تُحمَّل جاهزة.
ما يشتريه العميل فعلًا لا يظهر في صفحة الأسعار، ولا يُعرف إلا بعد الدفع، وأي بديل سحابي مستقل يُختبر بقدرة العميل على التسجيل ومعرفة المعالج والمغادرة.
حين يكون المنطق سليمًا والأداء بطيئًا، يكمن البطء غالبًا في الـ syscalls التي تنفذها المكتبات خلف الكود، وأداة مثل strace تكشف ذلك بسرعة.
مشروع مفتوح المصدر يربط بقاء ميزة كبيرة برقم مكتوب وموعد محدد، والأرقام الحالية لا تتجاوز نصف الهدف في أحسن الأحوال.
أدوات JavaScript صارت تُكتب بلغات أخرى، والانتقال إلى الأداة الأسرع هنا تغيير سطر في الإعدادات لا إعادة كتابة للمشروع.
تغيير مقصود في التصميم قد يُنتج أرقامًا خاطئة بهدوء في أي pipeline يعتمد على ترتيب الصفوف، والفريق الذي يرقّي دون قراءة ملاحظات الإصدار قد يكتشفه من تقرير خاطئ لدى عميل.
كان اكتشاف ضعف الجهاز يتطلب إرهاقه أولًا بحسابات تجريبية، والآن تصل المعلومة مجانًا قبل رسم أول pixel، وهو ما يهم أسواقًا تغلب فيها الأجهزة المتوسطة.
الاستغناء عن الـ virtual DOM في Vue ليس قرار إعادة كتابة للتطبيق، بل قرار على مستوى المكوّن الواحد، يمكن أن يبدأ بالشاشة الأثقل وحدها.
تسرب الـ goroutines لا يظهر في أي benchmark، بل في خدمة تثقل بعد أسابيع من التشغيل ويُعاد تشغيلها دوريًا، والآن صار الـ runtime نفسه يشير إليه.
أغلى جزء في رفع الصور من الهاتف على شبكة ضعيفة هو الشبكة نفسها، والإصدار الجديد يقلص ما يمر فيها ويخفف الحمل عن الاستضافة المشتركة.
أي نظام حصص يطرد أولًا من يلتزم بحدّه عند الازدحام يكافئ المتجاوز ويعاقب الملتزم، وهذا ينطبق على الـ rate limits والـ quotas كما ينطبق على الذاكرة.
أغلب عمل Rust الجاد هو استبدال كود C قائم قطعة بعد قطعة، وكل فجوة في التوافق كانت تترك سطرًا من C يعيش في المشروع سنوات.
الصفحة لم تصبح أسرع فعليًا، لكن المستخدم لم يعد ينتظر أمام شاشة فارغة، والفرق يظهر أكثر على شبكات الهاتف غير المستقرة التي يتصفح منها معظم المستخدمين.
مصدر السرعة ليس اللغة وحدها بل طريقة إدارة الذاكرة والاندماج داخل أداة البناء، والطبقة التي تمر على كل ملف في أدوات الواجهات تنتقل تدريجيًا إلى Rust.