كيف تٌقاس سرعة لغات البرمجة ؟


التعليقات

لغة البرمجة تكون أسرع كلما كانت أقرب الى لغة الألة,

أى ان لغة التجميع أسرع من السى, و السى أسرع من البيسك, و هكذا.

كلما كنت أقرب الى الألة تستطيع الوصول الى هدفك مباشرة, دون المرور بالاعتبارات العامة الكثيرة التى وضعها مبرمجى لغة بيسك مثلا للوصول الى نفس الهدف.

طبعا اللغات المترجمة أسرع من تلك المفسرة.

مرحباً بك أخ فادي زمن طويل لم نرى ردودك هنا، يظهر أنك انشغلت

لغة البرمجة تكون أسرع كلما كانت أقرب الى لغة الألة

يوجد موضوع جديد ربما يقوم بتغيير تلك المعادلة وهو اختلاق المعماريات والذي اصبح مؤخراً حقيقة لا فرار منها، هذا يجعل البرنامج الثُنائي بلغة اﻵلة يكون اسرع في معالج واحد فقط أو نوع معالجات واحد، لكن سوف لن يستفيد من ميزات خاصة في معالجات أخرى. لذلك يمكن أن تتفوق الـ JIT (نظرياً) في هذا المجال، حيث تقوم بإنشاء البرنامج الثُنائي المناسب حسب المعالج الموجود في تلك اللحظة. لكن عملياً برامج اﻵلة هي اسرع من برامج جافا أو سي شارب

ماهو رأيك

فى السى فانك تقوم باعادة الترجمة لكل معالج على حده, و استخدام الميزات الخاصة فى المعالج يعتمد على الoptimization و قدرات المترجم, كما ان المبرمج يمكنه كتابة أجزاء خاصة بكل معالج على حدة, ففى السى يمكنك دمج أكواد لغة التجميع مع لغة سى ضمن البرنامج نفسه و استخدام ما يشاء من قدرات المعالج.

على العموم قدرات المعالج الخاصة غالبا يتحكم بها نظام التشغيل و ليس البرنامج نفسه, و أكثر ما يعنينا هنا ادارة الذاكرة و دعم مكتبات نظام التشغيل بشكل جيد, و هو شىء تفشل فيه الجافا.

لقد جربت ان اقوم بكتابة web service على السى++, تعمل بواجهة تشبه الcgi من تصميمى (أى انه فى كل طلب يقوم الweb server بتحميل برنامج كامل و تشغيله و انتظار الرد منه),

و النتيجة كانت مذهلة,

طبعا الdebugging كان صعبا, و المجهود كان اكبر, لكن النتيجة فى النهاية تستحق, الموقع يعمل بسرعة فائقة, و بعدد مستخدمين كبير, و كل هذا على سرفر هو فى حقيقة الامر حاسوب عادى بمواصفات متواضعة مثبت عليه ويندوز سرفر!

قرأت ذات مرة ان برمجة موقع بالسى تمكنك من خدمة عدد العملاء أكثر ب10 مرات على الأقل بنفس العتاد.

فى السى فانك تقوم باعادة الترجمة لكل معالج على حده, و استخدام الميزات الخاصة فى المعالج يعتمد على الoptimization و قدرات المترجم, كما ان المبرمج يمكنه كتابة أجزاء خاصة بكل معالج على حدة, ففى السى يمكنك دمج أكواد لغة التجميع مع لغة سى ضمن البرنامج نفسه و استخدام ما يشاء من قدرات المعالج.

جربت نفس اﻷمر مع Free Pascal لدي برنامج حسابات اقوم بإصدار نُسخ له لبيئة لينكس 64 بت ووندوز 32 بت، في الحقيقة عملية طويلة، واحتاج لتشغيل نسخة وندوز virtual داخل لينكس، وايضاً لدي برنامج آخر مفتوح المصدر أقوم بإصدار نُسخة وندوز 32 بت و 64 بت، ولينكس 64 بت و 32 بت، ثم أطلب من صديق لديه ماكنتوش ومترجم Free pascal ليقوم بإصدار نُسخة ماكنتوش من هذا البرنامج، أحياناً اكسل من انتاج كل هذا الكم من اﻹصدارات.

أما في الجافا فالموضوع سهل جداً، من لينكس أقوم برفع خدمات الويب في كافة أنظمة التشغيل بكل معمارياتها دون أي تغيير.

لدي أيضاً مكتبة لعمل برامج ويب عن طريق free pascal والناتج هو CGI كثير من الناس انتقدوا على أنه برتوكول قديم. لكنه كان سريع جداً

سرعة الـ CGI مقاربة لسرعة PHP وهذه هي نتيجة المقارنة:

اعتقد أنه مع زيادة قدرة المعالجات سوف يقل هذا الفرق.

على العموم قدرات المعالج الخاصة غالبا يتحكم بها نظام التشغيل و ليس البرنامج نفسه

هل يستفيد منها نظام التشغيل لصالحه فقط أم لصالح البرامج

أخشى أن يكون لصالحه فقط ويكون البرامج محدود باﻹمكانات التي تمت ترجمته بها

هناك شيء آخر تتميز به جافا وأدواتها عن لغات البرمجة الطبيعية، وهي سرعة التطوير، وهو موضوع مهم جداً يليه مدراء المشاريع أهمية كبيرة، وربما لا يعيرون أي أهمية لسرعة اﻷداء أو الكفاءة.

إذا تفوقت الجافا ومكتباتها في شيء واحد، وإذا قلنا أنها لا تصلح إلا لشيء واحد فهو خدمات الويب، و ايضاً برمجة الويب

تحياتى لك يا صديقى العزيز,

الحقيقة كنت مشغولا فى الفترة السابقة بالفعل. شاركت فى بضع مواضيع لكن ليس بالكثافة السابقة. دائما ما أستمتع بالنقاش هنا فى المنتدى مع أشخاص مثقفين و لهم نفس اهتماماتى مثلك و مثل الاخوة الاعضاء . تحياتى لك و أسف على الغياب.

أنظر هذا الأختبار أخي

السرعة تقاس حسب الوقت المستغرق لتنفيذ خوارزمية معينة ،

ربما تجد Perl تتفوق حتى على C بـRegular Expression ، و لكن في حالات معينة ، حيث أن Perl مخصصة لهكذا عمل.

و Python بإستخدام Pypy قد تكون بسرعة مشابهة لـC في بعض الحالات ،

حتى جافا المعروف عنها أنها بطيئة ، تجد ان نظام إدارة قواعد بيانات Cassandra مبني بواسطة جافا و الذي يتعبر من أسرع انظمة قواعد بيانات NoSQL ،

و أيضاً لا ننسى أن للمطور الدور الأهم في سرعة برامجه و ليس لغة البرمجة.

وأيضاً لا ننسى أن للمطور الدور الأهم في سرعة برامجه و ليس لغة البرمجة.

كيف ذلك؟

يعني اذا كتبت برنامجين لهما نفس الوضيفة . لكن الاول كتبت فيه الكثير من الاسطر و التعقيدات . ام الثاني كتبته باشكل سلس و مختصر .اكيد الثاني سيكون اسرع .

هذه ما فهمته انا . ان كنت مخطأ اخبرني :)

إضافةً الى ما ذكره الأخ @walid123 ،

في لغة سي شارب مثلاً ، يعرف متى يستعمل for و متى يستعمل foreach ، و يعرف متى يستعمل struct و متى يستعمل class و هكذا.

كيف تكون بيرل اسرع من C فى اى حالة من الحالات اذا كانت perl فى حد ذاتها هى برنامج مكتوب على لغة سى!!

أى خوارزمية لها عبارة واحدة فى لغة perl مثلا لو افترضنا هذا يمكن برمجتها بشكل أسرع على لغة سى, لو قام المبرمج بكتابة اكواد أفضل من مبرمجى perl, و أعتقد ان هذا ما سوف يكون عليه الحال دائما, لأن مبرمجى perl يريدون التعامل مع الحالة العامة و يأخذون اعتبارات كثيرة, بينما المبرمج المتخصص يركز على هدفه و بالتالى يسلك الطريق الأسرع.

لماذا pypy اسرع من CPython (في بعض الحالات) مع العلم أن الأول مكتوب بالبايثون و الثاني مكتوب بالـC؟

ممكن طبعا, اذا كان مبرمج CPhyton لم يستخدم اللوغاريتمات المناسبه,

لتقريب الصورة تخيل ان مبرمجا كتب برنامج للبحث عن الrecords فى قاعدة بيانات

الذى كتبه بسى كتب برنامجا يقوم بالبحث فى كل record على حدة,

الأخر الذى يعمل بفيجوال بيسك مثلا و هى لغة بطيئة استخدم الindexing ,

من أسرع؟! اللوغاريتم أولا قبل اللغة. لكن لو كتبنا اللوغاريتم ذاته بعدة لغات سوف تكون السى هى الأسرع.

مع أني لا أكاد أصدق أن الجافا هي الأسرع حتى الـ C++ في هذه التجربة أسرع من الـC هذا عجيب !!!

تمت إعادة كتابة Cassandra بلغة C++ فاصبحت اسرع 10 مرات:

جزاك الله خيراً ، لم أكن أعلم بوجودها

هذه قواعد بيانات متوافقة مع Cassandra في بعض الخصائص كـCQL ، و تم التغيير في المعمارية.

ما قصدته أنه قبل فترة أن Cassandra كانت أسرع بكثير من MongoDB (مكتوبة بالـC++ و Document-Oriented) ، ولكن في اصدار 3 من مونغو اصبحوا بنفس السرعة تقريباً.

ما أقصده هو كله يعتمد على المبرمج ،

راجع ردي

اعتقد أن سبب السرعة ليس فقط التحول إلى لغة C++ لكن ربما المكتبات المُستخدمة أو ربما تم تحسين في ألغوريثمات قاعدة البيانات.

نعم هذا صحيح

كما في الفيزياء عندما نريد قياس عاملين من العوامل نقوم بتثبيت باقي العوامل المؤثرة على سير العملية.

  • في حالتنا هنا نحتاج قياس زمن التنفيذ بالنسبة للغة المُستخدمة، سنقوم بتثبيت باقي العوامل المؤثرة على سير العملية كنوع العتاد الصلب (ذاكرة-معالج- إلخ ...) بمعنى أخر استخدام نفس الجهاز لكل الإختبارات على اللغات محط الإختبار، تثبيت الخوارزمية المُستخدمة في على كل اللغات.

  • ولاختبار اللغات بشكل دقيق يتم اختبار خورزميات عديدة لأداء وظائف مُختلفة كخوزميات التعامل مع الذاكرة- الضغط على المُعالج - التعامل مع الملفات - الإتصال وإجراء استعلامات على أنواع قواعد بيانات مُعينة وهكذا للخروج بقياس دقيق عن أداء كل لغة في تنفيذ مهمة مُعينه، فلا أظن وجود لغة مُتفردة من ناحية السرعة في جميع النواحي.

فلا أظن وجود لغة مُتفردة من ناحية السرعة في جميع النواحي.

كما قال الأخ @فادي فإن لغة البرمجة الأقرب إلى الآلة هي الأسرع.

ولكن غيرها من اللغات (ذات السرعة المنخفضة) تمتاز بالسهولة، والمرونة العاليتين (مثل الجافا وبايثون).

  • نعم، ومن المعلوم أنه كلما زادت الخطوات للوصول للشكل النهائي لكود الآلة كلما زاد الوقت، ولكن الحديث العام عن اللغات مُرتفعة المستوى، فلن تجد أن أحداً سيقوم بكتابة برنامجه باستخدام 01 أو حتى Assembly إلا في حالات نادرة.

  • كما أن الاساس في الفرق في السرعات يعتمد على الخورزميات المُتبعة في كل لغة لتنفيذ غرض مُعين، فربما لغة أقرب للغة الألة ولكنها تنتهج خوارزمية أبطأ من لغة أُخرى أبعد منها عن لغة الآلة، ولكن فرق أداء الخوارزمية يجعلها تتفوق على اللغة الأقرب من الآلة من حيث سرعة التنفيذ.

كما أن الاساس في الفرق في السرعات يعتمد على الخورزميات المُتبعة في كل لغة لتنفيذ غرض مُعين.

هذا صحيح لحد ما، فللمترجم أثره أيضًا، فالمترجمات الضعيفة تنتج برامج بطيئة وذات جودة منخفضة، والمترجم القوي لنفس اللغة تنتج برامج أفضل وأسرع.

باستعمال دوال معينة مثلا لغة PHP استعمال microtime

شاهد الموضوع التالي

تكتب نفس الخوارزمية على نفس الجهاز وترى من ينفذها أسرع من اﻷخر

السلام عليكم،

أولا، يجب أن نتّفق على معنى سرعة لغات البرمجة، لأن الغالب أن تتم المقارنة بين سرعة التجميع Compiling بين اللغات، لأن التنفيذ يقوم به نظام التشغيل.

سرعة لغات البرمجة ليست تقاس برقم واحد، هناك العديد من المعايير التي يمكن أن تتدخل لترجيح سرعة لغة برمجة على أخرى، بما في ذلك: نظام التشغيل، تعدد المنصات، التحسينات Optimizations، التنقيح Debugging وغير ذلك...

أيضا كقاعدة عامة: ما تربحه من جهة قد تخسر لأجله من جهة أخرى. فإذات ربحت زيادة في سرعة المترجم للغة فربما تحصل على استهلاك مفرط في الذاكرة، أو مساحة الملف الناتج. لذلك يقال دائما أن سرعة لغة البرمجة ليست معيارا لتحديد أفضل لغة برمجة.

لكن تبقى الحاجة لمقارنة سرعة الترجة Compiling خاصة في البرامج التي تحتوي على الكثير من المعالجات، أو سرعة التنفيذ للبرامج التي تقوم تنفيذ كم كبير من التعليمات عند الإقلاع مثلا أو غير ذلك.

لمثل ذلك هناك اختبارات مقارنات تقنية Benchmark حيث توضع لغات البرمجة في نفس عوامل العتاد البرنامج، ويراقب آداؤها عند كل مستوى معيّن من عدد الأسطر البرمجية، ينظر:

لم افهمك جيدا اخي

لكن تفضل هذا موقع يعطيك قياس سرعة ، جميع مكونات موقعك ، و الموقع بشكل عام

ليس فقط في برمجة المواقع ان اتحدث عامة اللغات .

مثلا يقولون ان c اسرع من جافا ....

تفضل قد تجد مرادك في هده المواضيع اذا كنت تجيد الإنجليزية

برامج لغة السي أسرع لأنها تترجمة للغة الآلة مباشرة، أما الجافا فهي تترجم للغة وسيطة تعمل على الآلة والهمية للجافا، فالبطء ليس في أصل اللغة، بل في كيفية ترجمة وتنفيذ البرنامج. هذا ما يتعلق بالسي والجافا.

أما اللغات التفسيرية فهي الأبطء على الإطلاق (ما لم تكن مكتبتها القياسية مكتوبة بلغة السي، أو أي لغة سريعة).

والله أعلم


برمجة

مجتمع للمبرمجين من جميع المستويات لتبادل المعرفة والخبرات. ناقش لغات البرمجة المختلفة، الحلول البرمجية، والمشاريع.

24.9 ألف متابع