هل لوجيت أسرع حقًا من كل اللغات الديناميكية الأخرى؟ [مغلق
سؤال
وفقًا للعبة القياسية لغة الكمبيوتر ، تنفيذ Luajit يبدو أنه يتغلب على كل لغة ديناميكية أخرى (V8 ، Tracemonkey ، PLT Scheme ، Erlang Hipe) بواسطة أمر من حجم.
أعلم أن هذه المعايير ليست تمثيلية (كما يقولون: "ما هي تطبيقات لغة البرمجة التي لديها أسرع البرامج القياسية؟") ، لكن هذا لا يزال مثيرًا للإعجاب حقًا.
في الممارسة العملية ، هل هو الحال حقا؟ شخص ما اختبر هذا تنفيذ لوا؟
المحلول
هناك مناقشة جيدة في Lambda في نهاية المطاف. لوجيت جيد جدا.
لقد أبلغ الكثير من الناس عن سرعات رائعة لوا ل (القائمة البريدية لوا). تعتبر الدراجات الأكثر إثارة للإعجاب لرمز لوا النقي. لا يكون برنامج التحويل البرمجي التتبع فعالاً عندما يكون هناك الكثير من المكالمات لوظائف C في وحدات المكتبة القابلة للتحميل.
نصائح أخرى
في حالتي (تطوير النموذج الأولي للعبة) ، لاحظت عدم تحسين الأداء على الإطلاق. أستخدم LUA للتضمين ، لذلك هناك الكثير من المكالمات لوظائف مكتبة C ++. على الرغم من أن الحلقة الرئيسية هي في نص LUA ويتم تنفيذ كل المنطق المهم في LUA ، تم تحديد الأداء العام من خلال تقديم محركات الفيزياء والمحركات التي يتم تنفيذها في C ++. LUA الأصلي سريع بالفعل بما يكفي لمثل هذه التطبيقات.
قمت بتجربة الدرس المستفاد هنا: http://www.sampalib.org/luajit2.0_tunning.html بعض البيانات لم تعد صالحة بعد الآن (maxmcode = 1024 كافية) ، لكن Luajit يجلب تحسنًا قويًا على 600 سطر من الكود النصي لوا (لا يوجد مكالمة C للضغط على الكمال ...) هذا ليس تطبيقًا واسع النطاق ولا حالة الاستخدام المدمجة ولكن أكثر بكثير من المعايير.
يعتمد أداء JIT على شيئين: أداء لغة البرمجة النصية الأصلية ، وأداء المترجم.
برنامج التحويل البرمجي هو تقنية ناضجة للغاية ومعظم برنامج التحويل البرمجي JIT لديه أداء مماثل. ومع ذلك ، فإن لوا نفسها ، أي لوا-بدون جيت ، ربما تكون واحدة من أسرع لغة البرمجة النصية.
لوا أسرع من جافا دون جيت. لوا أسرع من جافا سكريبت دون جيت. لوا أسرع من اللغات الأكثر ترابطًا-دون جيت.
لذا،
Lua-Jit أسرع من Java-With-Jit (The Sun Java) ، Lua-Jit أسرع من V8 (JavaScript-with-Jit) ، إلخ ، ...