إعادة كتابة Zig لدالة strspn في libc تجعل إدخال 40 ألف سجل في SQLite يستغرق دقائق على لينكس
المغزى: التكلفة التي تتضاعف مع حجم البيانات قد تختبئ في دالة تبدو عادية تحت الكود الذي يكتبه المطور، فيبقى كوده سليمًا في نظره، ولا يكشفها إلا الـ profiler.
وسم
تحسين الأداء في البرمجيات والمواقع: أين يضيع الوقت والذاكرة، وكيف قاسته الفرق التي نشرت نتائجها، وما الذي تغير في الأرقام.
المغزى: التكلفة التي تتضاعف مع حجم البيانات قد تختبئ في دالة تبدو عادية تحت الكود الذي يكتبه المطور، فيبقى كوده سليمًا في نظره، ولا يكشفها إلا الـ profiler.
المغزى: التحسين لم يأتِ من تسريع البناء بل من تصنيف كل تغيير، مع بقاء البناء الكامل هو الافتراضي حين يتعذّر إثبات أن البناء الأصغر يعطي النتيجة نفسها.
المغزى: معالج يعمل بنسبة 100% قد يقضي نصف وقته منتظرًا الذاكرة، فقياس الأداء بنسبة الاستخدام وحدها يحسب الانتظار عملًا.
المغزى: الموقع الساكن المبني على Next.js يحمّل مع كل صفحة runtime لا يحتاجه، والقارئ على شبكة ضعيفة يدفع ثمنه، بينما يبقى هذا الثمن مبررًا في التطبيقات التفاعلية فعلًا.
المغزى: طلب تحسين الكود من موديل يُفهم غالبًا على أنه طلب سرعة، والسرعة لا تعني استهلاكًا أقل، بينما جاء أكبر توفير في الطاقة من إعداد واحد هو حد التوكنز للخرج.
المغزى: بطء الصفحة بسبب سكربت إعلان يعمل بعد التحميل كان يُحَسّ ولا يُقاس، والآن صار له رقم داخل المتصفح يمكن وضعه أمام من يدير الإعلانات.
المغزى: الفجوة المفترضة بين لغة آمنة الذاكرة وكود C محسّن يدويًا صارت رقمًا يمكن قياسه، وهذا الرقم يتغير بالمعالج نفسه، فعبارة لغة أبطأ ناقصة دون تحديد أبطأ على أي جهاز.
المغزى: كائنان متطابقان في الكود قد يختلفان في الذاكرة بسبب ترتيب التهيئة وحده، وهذا الفرق لا يظهر عند قراءة الكود بل في الـ profiler فقط.
المغزى: محرك عام يفهم كل شيء يحمّل المتصفح بكل شيء، ومكتبة مكتوبة لغرض واحد قد تغطي الوظيفة نفسها بسُبع الحجم، وتجعل المخطط مقروءًا على الهاتف.
المغزى: أرشيف صور JPEG القائم يحمل 9% إلى 20% من حجمه بلا فائدة، ويمكن استعادتها بتحويل لا يمس الجودة، بينما تبقى AVIF الخيار الأصغر للصور الجديدة.
المغزى: بايت واحد غير مقروء من استجابة HTTP كان كافيًا لفتح اتصال جديد ودفع ثمنه في الشبكة، والتكلفة أعلى على من يتصل بخوادم بعيدة عنه.
المغزى: تحسين صغير في مكتبة موجودة داخل الخوادم والهواتف والراوترات والتلفزيونات لا يُضرب في جهاز واحد بل في مليارات، والأداء كثيرًا ما يختبئ في الأجزاء المملة من الكود.
المغزى: سؤال هل تغيّر الملف لا يحتاج دالة تشفيرية، واستخدام دالة آمنة في مكان لا يحتاج إلى الأمان تكلفة يدفعها المستخدم من وقته دون مقابل.
المغزى: حين يفصح أشهر مطوّري الـ kernel عن الأداة التي كتبت الكود، يتحول السؤال من هل يُقبل كود الذكاء الاصطناعي إلى من اختار المشكلة ومن قاس ومن يعرف ما لم يُحلّ بعد.
المغزى: الأداة لا تحل محل TypeScript في المحرر، لكن خطوة فحص الأنواع في الـ CI هي التي تتكرر مع كل pull request، وهناك يتحول الفرق من ثوانٍ إلى دقائق.
المغزى: صيغة توفر ثلث حجم الصور عادت إلى أكبر متصفح، لكن غيابها عن Chrome على Android يجعلها إضافة بجانب JPEG لا بديلًا عنه في المنطقة.
المغزى: الفارق الكبير في أداء Python لم يعد في رقم النسخة بل في اختيار المفسّر، فالترقية وحدها تعطي تحسنًا طفيفًا، أما إزالة الـ GIL فتغيّر النتيجة في العمل المتوازي.
المغزى: القياس الذي يستغرق أقل من 10 ميلي ثانية يقيس أدوات القياس أكثر مما يقيس الكود، والـ benchmark أداة لبناء الحدس لا آلة دقة.
المغزى: نقاش إعادة الكتابة بـ Rust يدور غالبًا بين من لم يكتبوا الأداة الأصلية، وهنا قرّره كاتب اثنتين من أشهر أدوات الربط ودفع ثمنه من وقته.
المغزى: جزء كبير من البطء في أدوات البرمجة لا يأتي من الحساب، بل من تحويل البيانات إلى نص ثم إعادة قراءته، وحذف هذه الخطوة قد يكون أكبر تحسين متاح.
سرعة البناء تحدد عدد المحاولات التي يجريها المطور في الساعة، ومن ينتظر دقيقتين عند كل تغيير يعمل بطريقة مختلفة عمن ينتظر عشرين ثانية.
عادة يُدفع الأمان من السرعة، لكن إعادة كتابة فك صور WebP بلغة Rust جاءت بالاثنين معًا، وهي مكتبة تعالج ملفات قادمة من مستخدمين مجهولين في كل منتج يقبل رفع الصور.
خوادم Graviton وأجهزة Apple Silicon صارت ضمن المعماريات التي يمكن فيها تسريع الكود بـ SIMD من Go مباشرة، ونُقلت مسؤولية اختيار الأمر الأمثل من المطور إلى الـ compiler.
المغزى: التحسن الكبير في الأداء لم يأتِ من إعادة كتابة ولا من خوارزمية جديدة، بل من تراكم تحسينات صغيرة، ونشر ما تراجع منها جزء من مصداقية الرقم.
البطء لم يكن في بيئة التشغيل بل في مكانها، ونقل التنفيذ إلى داخل الشبكة أتاح أيضًا ملفات حقيقية وbinaries أصلية، فقد تعمل على الـ edge مكتبات كانت مستبعدة منه.
سقف عدد الاستعلامات في كثير من التطبيقات لا تحدده قوة قاعدة البيانات، بل زمن الذهاب والإياب في الشبكة، وترقية الخادم لا تغير هذا الرقم.
حجم ملف CSS لم يكن هو ما يبطئ الصفحات، بل الحساب الذي يجري عليه أثناء التشغيل، والمتصفح يعالج CSS العادي أسرع من أي كود يولّده.
بعض مشكلات الأداء ليست ضبطًا ناقصًا بل عيب توزيع موجود منذ السطر الأول، ولا يظهر إلا حين يكبر حجم الاستخدام.
عمل كان يتطلب كتابة assembly لكل معمارية أصبح ممكنًا داخل أدوات Go الرسمية، والحل جاء من إزالة معلومة من نظام الأنواع لا من إضافة أنواع جديدة.
عبارة "اجعله أسرع" رأي لا يمكن التحقق منه، أما رقم مستهدف عند الـ p75 فشرط يتحقق أو لا، وهو ما يسمح لـ agent بالعمل على ما يهم فعلًا.