هل ممكن شرح لهذا ال benchmark لإني اجد صعوبة في فهمة
ما شرحه إسلام عام و شخصيا أجد رده عام :) فأحببت الرد بشئ من التفصيل.
وجه المقارنة
في الموقع عدة أوجه من المقارنات. و المقارنات تعتمد على نوع بنية الجهاز.
إذا لاحظت أول خانة all benchmarks تعني أظهر نتائج كل الاختبارات. كل اختبار، إذا ضغطت على القائمة المنسدلة، تهتم باختبار اللغة من جهة معينة. من هذه الجهات، استخدام الذاكرة و الوقت اللازم للمعالجة و غيرها.
القائمة الثانية Scala معناتها انك اخترت لغة Scala كلغة رئيسية للمقارنة، و القائمة الثانية PHP تعني اختيارك لغة PHP لمقارنة لغة Scala بها
القائمة الأخيرة x64 quad core تهتم ببنية الجهاز. اخترت معالج Quad core و نظام تشغيل يعمل بـ 64 بت.
المقارنة
الرسمة في أعلى الصورة ما هي إلا اختصار للجدول في أسفل الصورة. تذكر، اخترنا لغة Scala لغة رئيسية للمقارنة. في الرسمة، توجد 3 أنواع من المقارنات. و كل مقارنة لها شكل عمود محدد.
اللون الرمادي السميك تقارن الوقت،
الأعمدة النحيفة تقارن استخدام الذاكرة،
و الأعمدة المفرّغة تقارن عدد سطور البرنامج.
تقرأ الرسمة اعتمادا على اتجاه الأعمدة بالنسبة للخط منتصف الرسمة. إذا العمود للأسفل تقول "أسرع" إذا للأعلى تقول "أبطأ". بما إن اللغة الأساسية Scalaـ فتقرأ الرسمة كالتالي: الاختبار الأول سرعة تنفيذه في Scala أسرع من PHP بسنبة تقريبا 1/52 (تقريبا مكان وقوف العمود).
أو لو أحببت، الرسمة لا توضّح الأرقام بالتفصيل أو نوع الاختبار، فتوجه للجدول. الجدول مقسم إلى 4 عواميد.
العمود الأول يمثل نوع الاختبار.
الثاني عبارة عن سرعة التنفيذ،
الثالث كمية الذاكرة المستخدمة
و الرابع لحجم الكود.
مثلا:
اختبار fannkuch-redux، استغرقت Scala 1/52 أقل من PHP.
و في مثلا regex-dna، استغرقت Scala نصف الوقت للتنفيذ لكن استغلت 4 أضعاف الذاكرة بكمية تقريبا مقاربة لنفس حجم الكود.
المقارنة التفصيلية
الجدول الأخير يفصل بالتحديد عوامل الاختبار بالأرقام:
العمود الأول يوضح نوع الاختبار و تقييم كل لغة. العمود الأول مقسّم إلى 3 أقسام: اللون الرمادي يوضح نوع الاختبار و أسفله صفين يمثلان لغات البرمجة التي حددتها للمقارنة، في هذه الحالة Scala و PHP
العمود الثاني و الثالث يمثلان الوقت الذي استغرقه البرنامج للتنفيذ و الوقت اللازم لبدئه بالثواني.
العمود الرابع لكمية الذاكرة المستخدمة بالكيلوبايت
العمود الخامس لحجم الكود بعدد السطور
السادس يوضح النسبة الشاغرة من برنامج لكل نواة. لا تنسى في اختبارك اخترت Qaud Core، أي 4 أنوية. كل نسبة توضع النسبة التي يشغلها برنامجك لكل نواة. إذا كانت 3 ارقام من أصل 4 عبارة عن أصفار، معناها البرنامج صُمم بطريقة لكي يشغل فقط نواة واحدة.
مثال:
الاختبار: binary tree
الوقت: Scala استغرفت تقريبا %20 أقل من PHP
الذاكرة: Scala احتاجت تقريبا 476 ميغابايت أما PHP احتاجت 1025 ميغابايت
حجم الكود: Scala تقريبا 490 سطر و PHP تقريبا 470 سطر
الأنوية: Scala استفادت من كل الأنوية. استغلت 26% من النواة الآولى، 15% من النواة الثانية و الثالثة، و 88% من الرابعة. أما PHP فقط 100% من نواة واحدة فقط.
إذا كان سؤالك عن النتائج للمعطيات التي وضعتها تحديدا فإن السكالا تمضي وقتا للاختبار N-bodies المحدد مع معالج x64 رباعي النواة ذاكرة اقل من PHP بمقدار 1/30 اي ان لو ان برنامج الـ PHP امضى 30 ثانية لتنفيذ الاختبار فبرنامج السكالا يمضي ما يقارب 1 ثانية لتنفيذه
تصحيح : إذا كان سؤالك عن النتائج للمعطيات التي وضعتها تحديدا فإن السكالا تمضي وقتا للاختبار N-bodies المحدد مع معالج x64 رباعي النواة (ذكرت ذاكرة بالخطء في الرد السابق) اقل من PHP بمقدار 1/30 اي ان لو ان برنامج الـ PHP امضى 30 ثانية لتنفيذ الاختبار فبرنامج السكالا يمضي ما يقارب 1 ثانية لتنفيذه
التعليقات