حلول أكتوبر مرة أخرى، وهذا يعني أنه من الوقت لتجربة الإصدار الجديد من Python (تقنيًا، أنا أستخدم إصدار 3.15.0rc3، والإصدار الرسمي 3.15 سيصدر بعد أيام قليلة). تمامًا كما فعلتُ مع مقالي Python 3.14 للأداء قبل عام، أنا اليوم أشارك جولة جديدة من benchmark غير الرسمي لـ Python، أقارن فيه Python 3.15 بالمفسرات السابقة التي تعود إلى 3.10. إذا لم تكن مهتمًا بالجداول والرسوم البيانية وتريد فقط قراءة تحليلي، فيمكنك القفز إلى قسم الاستنتاجات في نهاية المقال. benchmark الذي أطلقته "غير رسمي" يعني ماذا؟ من المستحيل قياس أداء لغة برمجة بشكل موضوعي وشامل. كل ما يمكنك فعله هو كتابة بعض البرامج وتشغيلها للحصول على قياس لأداءها. برامج أخرى قد تظهر خصائص أداء مشابهة أو قد لا، حقًا لا يوجد way to know. هدفي من هذا benchmark هو فقط الشعور بتغيرات الأداء across Python الإصدارات، لكنني أريد أن أكون واضحًا أنني لا أحاول الحصول على ملف تعريف أداء شامل لمفسر Python. بالنسبة لـ benchmark الخاص بي، سأقوم بتشغيل برنامجين يُدعى fibo.py و bubble.py، يمكنك فحصهما إذا أحببت. الأول calculates أرقام تسلسل فيبوناتشي، والثاني يقوم بترتيب الأرقام باستخدام خوارزمية الفقاعة. لقد اخترت هذين البرنامجين كممثلين لفئتين من الخوارزميات. عملية حساب فيبوناتشي تتم باستخدام التكرار، الذي وجدته somewhat غير كفاءة في مفسرات Python. من ناحية أخرى، الفقاعة sort تستخدم فقط for-loops، بدون أي تكرار. benchmark الخاص بي لا يحاول تغطية أنواع أخرى من البرامج. وبالتحديد، لاحظ أنني لا أشمل كود I/O المحدود في هذا benchmark. لأن بعض التحسينات في الأداء في الإصدارات الأخيرة من Python تدور حول multithreading، فقد قمت أيضًا بإنشاء متغير multithreaded لكل برنامج، لذا فإجمالي أربعة اختبارات. матриx الاختبار الكامل في الواقع، матриx الاختبار معقد جدًا، لأنني يجب أن أجري الاختبارات الأربع المتغيرة تحت جميع إصدارات Python، بالإضافة إلى بدائل JIT و free-threading لتلك التي تمتلكها. أحب أن أجري الاختبارات تحت Py Py أيضًا، لأن هذا المفسر أظهر أداءً مثيرًا للإعجاب في عمليات benchmark السابقة لهذا المقال. وللوضع أداء Python within the wider ecosystem، قمت أيضًا بنقل البرنامجين إلى Java Script (Node.js) و Rust. هنا matrix الاختبار الكامل الذي عملتُ معه: 2スクリプト الاختبار: fibo.py: يحسب أرقام تسلسل فيبوناتشي، مع التكرار؛ bubble.py: يقوم بترتيب قائمة من الأرقام العشوائية المُنشأة، بدون تكرار. 2 modes de thread: Single-threaded; 4 threads متوازية. 6 إصدارات من Python، بالإضافة إلى الإصدارات الأخيرة من Py Py, Node.js و Rust: CPython 3.10, 3.11, 3.12, 3.13, 3.14, 3.15; Py Py 3.12; Node 26.3; Rust 1.97. 3 interpreters Python: Standard; Just-In-Time (JIT): فقط لـ CPython 3.13+; Free-threading (FT): فقط لـ CPython 3.13+. قراء benchmark السابقين للمقال قد يتذكرون أنني كان لدي بعد إضافي في матриx الاختبار لـ Linux vs. mac OS. Given أنه لم تكن هناك فروق ذات دلالة إحصائية بينهما في مرتين السابقتين من benchmark، فقد قررت إلغاء اختبارات mac OS هذه المرة، لذا تم إجراء جميع الاختبارات على لابتوب Linux الخاص بي الذي يعمل بنظام Gentoo Linux ومعالج Intel Core i5. الطريقة التي أستخدمها لقياس أداء كل مشارك في هذا benchmark هي تشغيل برنامج الاختبار ثلاث مرات وأخذ متوسط مدة الثلاث. في جداول النتائج التي أشاركها أدناه، أنا أيضًا أظهر الفارق في السرعة مقابل إصدار 3.15، وعندما يكون ذلك منطقيًا أيضًا الفارق في السرعة مقابل إصدار سابقة من given interpreter. للمقارنة السرعة، أستخدم نسبة بسيطة، حيث 1x يعني نفس السرعة، 0.5x يعني نصف السرعة (أو أن الوقت المستغرق كان ضعفين)...
المصدر: Hacker News · لخّصه HeadlinesBriefing