إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

من الأسرع بايثون أم باقي لغات البرمج ؟!

تقليص
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • [شرح] من الأسرع بايثون أم باقي لغات البرمج ؟!

    في موضوع حساس طرحه أخونا Mohammed Berdai في مدونته

    مقارنة بين أداء بايثون و لغات البرمجة الأخرى



    ذكر فيه سرعة تنفيذ الكود بين أشهر لغات البرمجه

    فكان أداء البايثون غير مرضي أو حتى مخزي مقارنه بباقي لغاة البرمجه

    تم تطبيق كود مشابه للكود الذي تم تطبيقه في البايثون بعدة لغات برمجه


    سرعة تنفيذ الكود

    بايثون: 24 ثانية

    روبي : دقيقتين وثانيه

    بي أتش بي: 21 ثانيه

    جنو سي بلس بلس : ثانية ونصف

    جافا : ثانية و8 أعشار الثانية

    سكالا: ثانيتين وأربعة اعشار الثانية


    صراحة عن نفسي لم ترضيني هذه النتيجه

    وتذكرة مكتبة psyco

    لمن لا يعرف هذه المكتبه فهي تستخدم لتسريع تنفيذ كود البايثون

    عند تجربتها على نفس الكود الذي وضعه أخونا محمد

    كانت النتائج مذهله تم إظهار النتيجه بأقل من ثانيه !

    هذا هو المثال المستخدم

    كود:
    def euler5():
        i = 20
    
        seq = range(2, 20+1)
        while True:
            for j in seq:
                if i % j != 0:
                    break
                elif j == 20:
                    return i
    
            i += 20
    
    print euler5()
    المثال بعد إستخدام مكتبة التسريع

    كود:
    from psyco import full
    full()
    
    def euler5():
        i = 20
    
        seq = range(2, 20+1)
        while True:
            for j in seq:
                if i % j != 0:
                    break
                elif j == 20:
                    return i
    
            i += 20
    
    print euler5()
    كل يوم يزيد إعجابي بهذه اللغة
    هل لديك الوقت لتلعب مع لغة البرمجة بايثون؟
    الأساسيات وتطوير البرامج - تطوير وبرمجة الويب
    --------
    جرب التدوين بقوة بايثون LightBlog

  • #2
    مفسر بايثون PyPy تغلب على المفسر المكتوب بسي من حيث السرعة

    تعليق


    • #3
      السلام عليكم ورحمة الله

      مع احترامي للأخ sasa1 والأخ أمين روخ , الكلام الذي ذكرتوه غير صحيح

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

      أما عن تجربتي الشخصية فقد مررت على موضوع يتناول كود يبحث عن حل معين عن طريق معادلة فأخذت هذا الكود وجربته بنفسي على جهازي
      اللغات لي جربت عليها هي php و VB6 و C# و C و C++ وأيضا لغة Gambas2
      فكانت النتيجة أن C و C++كانوا الاسرع من بين اللغات حيث يجدون الحل في أقل من ثانية وكانوا متقاربين وكانت المقارنة في نظام لينكس
      أما VB6 كان يجد لي النتيجة في 32 ثانية وأنا شغال من خلال الكود لكن لما صنفته يعني شغلته من ملف exe كانت النتيجة 8 ثواني هذا بالطبع في نظام XP
      أما C# و VB.net كانوا متقاربين وجدوا الحل في 8 ثواني
      لكن لي صدمني هو لغة Gambas2 وجدت لي الحل في 130 ثانية
      أما php فكان أسرع من C# نفسها وجد لي الحل في 4 ثواني

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

      تعليق


      • #4
        جيد، هل ستكون نسخة assembly اسرع؟
        التعديل الأخير تم بواسطة boussouira; الساعة 11-07-2010, 12:44 AM.

        تعليق


        • #5
          السلام عليكم
          مكتبة psyco ما هي إلا وسيلة لتسريع كود البايثون عن طريق زيادة مساحة الذاكرة المستخدمة:
          Think of Psyco as a kind of just-in-time (JIT) compiler, a little bit like what exists for other languages, that emit machine code on the fly instead of interpreting your Python program step by step. The difference with the traditional approach to JIT compilers is that Psyco writes several version of the same blocks (a block is a bit of a function), which are optimized by being specialized to some kinds of variables (a "kind" can mean a type, but it is more general). The result is that your unmodified Python programs run faster.
          http://psyco.sourceforge.net/introduction.html

          ويوجد ايضا وسيلة لتسريع كود الC/C++ عن طريق ال optimizer فيمكن للمصنف استخدام مساحة اكبر لإنتاج ملف تنفيذي أسرع
          انظر هنا http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html
          بالتوفيق
          http://en.wikipedia.org/wiki/Just-in-time_compilation

          تعليق


          • #6
            الغايه من كتابة الموضوع ليس تحدي للغات البرمجه من ناحية السرعه

            ولكن لا حاجة لتغيير البايثون من أجل السرعه ما دام هنالك طرق تؤدي الغرض

            بالتأكيد هنالك الأداء الإفضل لسي وسي بلس بلس

            لكن مع مواصفات الأجهزه العاليه أصبح الاداء آخر ما يؤرق المبرمج
            هل لديك الوقت لتلعب مع لغة البرمجة بايثون؟
            الأساسيات وتطوير البرامج - تطوير وبرمجة الويب
            --------
            جرب التدوين بقوة بايثون LightBlog

            تعليق


            • #7
              المشاركة الأصلية بواسطة sasa1 مشاهدة المشاركة
              الغايه من كتابة الموضوع ليس تحدي للغات البرمجه من ناحية السرعه

              ولكن لا حاجة لتغيير البايثون من أجل السرعه ما دام هنالك طرق تؤدي الغرض

              بالتأكيد هنالك الأداء الإفضل لسي وسي بلس بلس

              لكن مع مواصفات الأجهزه العاليه أصبح الاداء آخر ما يؤرق المبرمج
              كلام سليم فلا احد يذايد على السى فى السرعة وكذلك لا احد يذايد على البايثون فى السهولة
              سبحان الله و بحمده سبحان الله العظيم
              منتدى لينكس الحر www.arabnix.org
              الاصدار الثانى من دليل المستخدم العربي في أوامر لينكس

              تعليق


              • #8
                بتكليف من عمدة اللينوكساوية المصريين ::
                يا شباب أشاهده الآن مزحه كبيرة
                القوا نظرة علي الإخبارات القياسية الموثوقة من دبيان!:
                http://shootout.alioth.debian.org/u3...pypy&lang2=gpp

                http://shootout.alioth.debian.org/u3...thon&lang2=gpp


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

                راجع المقارنة التي تحتوي " السرعة و استهلاك الذاكرة وكمية المكتوب. ستجد أن بايثون وصلت إلى ١\٨٥ من سرعة السي++
                هذا جيد حقاً لكن إذا قارنتها بالسي ستجد أنها صارت ١\١١٧ وهذا أداء سيء جداً للبايثون!

                تعليق


                • #9
                  المشاركة الأصلية بواسطة محمد نجم مشاهدة المشاركة
                  بتكليف من عمدة اللينوكساوية المصريين ::
                  يا شباب أشاهده الآن مزحه كبيرة
                  القوا نظرة علي الإخبارات القياسية الموثوقة من دبيان!:
                  http://shootout.alioth.debian.org/u3...pypy&lang2=gpp

                  http://shootout.alioth.debian.org/u3...thon&lang2=gpp


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

                  راجع المقارنة التي تحتوي " السرعة و استهلاك الذاكرة وكمية المكتوب. ستجد أن بايثون وصلت إلى ١\٨٥ من سرعة السي++
                  هذا جيد حقاً لكن إذا قارنتها بالسي ستجد أنها صارت ١\١١٧ وهذا أداء سيء جداً للبايثون!
                  ويضيف قائلاً ايضاً::
                  بالطبع بايثون هي احد اسرع اللغات التفسيرية أنا لم اقل أنها بطيئة لكن المقارنة بال سي و السي ++ مقارنة فاسدة
                  هذه مقارنة بينها وبين روبي مثلاً توضح تفوق بايثون علي روبي بشكل ملحوظ http://shootout.alioth.debian.org/u3...ypy&lang2=ruby

                  لكن هناك شئ اخر هنا اذا اردت البحث عن لغة تفسيرية اسرع من بايثون"لكنها ليست اسهل بالطبع"
                  فهناك لوا Lua
                  لوا تحوي مفسر عادي ومفسر مسرع
                  مثل بايثون cpython و pypy

                  http://shootout.alioth.debian.org/u3...y&lang2=luajit
                  http://shootout.alioth.debian.org/u3...thon&lang2=lua
                  تتفوق لوا علي بايثون بشكل ملحوظ جداً!


                  ما اعرفه ان اللغات ترتب علي حسب السرعة
                  لغات مصرفة , لغات تعتمد علي اله افتراضية ، لغات تفسيرية
                  لم اري في حياتي لغة مصرفة تهزمها الجافا مثلاً
                  ولم اري لغة علي اله افتراضيه تهزمها لغة تفسيرية
                  بالبطع لدينا لوا حالة شاذة : تفوقت علي جافا في عدة اختبارات
                  http://shootout.alioth.debian.org/u3...jit&lang2=java

                  تعليق


                  • #10
                    البايثون ناجحة كلغة اسكربتنج بشكل عام
                    فمثلا اذا كتب مثلا scene.render فهل هذا سيوثر على الاداء ؟ وظيفة البايثون الوحيدة انة سيرسل للمحرك المبرمج بالسى/سى++ طلب تصيير للمشهد .
                    من wiki
                    A scripting language, script language or extension language is a programming language that allows control of one or more software applications. "Scripts" are distinct from the core code of the application, as they are usually written in a different language and are often created or at least modified by the end-user.[1
                    ]

                    فاذا كتبت مزيد من ال implementation الذى تريدة بالبايثون فهذة موازنتك انت فاذا اردت تسريعة امامك اعادة كتابتة بالسى او احد اللغات السريعة وتكاملة مع كود البايثون . ولكن فى اغلب الاوقات لا تكون السرعة تصنع فارق واقعى .
                    غير ان الكثير من الimplementation صممت بالسى وبطرق تهدف للسرعة .
                    2v || 2v

                    www.3dvui.org

                    تعليق


                    • #11
                      المشاركة الأصلية بواسطة mohamedyosry مشاهدة المشاركة
                      البايثون ناجحة كلغة اسكربتنج بشكل عام
                      فمثلا اذا كتب مثلا scene.render فهل هذا سيوثر على الاداء ؟ وظيفة البايثون الوحيدة انة سيرسل للمحرك المبرمج بالسى/سى++ طلب تصيير للمشهد .
                      من wiki
                      ]

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

                      تعليق

                      يعمل...
                      X