سؤال

بالنسبة إلى Silverlight 2 ، يبدو أن خيارات البرمجة هي:

  • ج#
  • VB
  • لغات البرمجة النصية DLR
    • Ironruby
    • Ironpython
    • تمكنت Jscript المهملة (إن لم يتم إلغاؤها)

هل هذه حالة تكون فيها اللغات الأصلية (C# و VB) أسرع من لغات DLR بترتيب من حيث الحجم أو نحو ذلك؟

أي أمل في "العيش" في IronPython عندما أقوم ببرمجة عميل Silverlight ، أو هل يجب أن أتوقع أن أسقط إلى C# للعمل المكثف معالجًا؟

استبيان بلدي اللغات يأتي من هذه المجموعة من الأمثلة لـ C# و VB و هذه الصفحة تناقش DLR.

هل كانت مفيدة؟

المحلول

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

نعم في جنرال لواء سيكون VB.NET و C# أسرع من اللغات القائمة على DLR. تعمل اللغات الثابتة على المزيد من العمل في وقت الترجمة مثل ربط الطريقة. يجب أن يتم هذا النوع من العمل في وقت التشغيل للغات المستندة إلى DLR ، وبالتالي لديهم تكلفة أكبر قليلاً في وقت التشغيل.

ومع ذلك ، فإن الكثير من العمل يذهب إلى تحسين اللغات القائمة على DLR و DLR. يتم تخفيف الكثير من هذا العمل من قبل مختلف ذاكرة التخزين المؤقت وما إلى ذلك. في العديد من أنواع التطبيقات ، سيكون اختلاف الأداء مهملاً.

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

نصائح أخرى

عادةً ما يكون لتحسين الخوارزمية تأثير أكبر بكثير من إعادة الكتابة بلغة ثابتة.

كنت قد تكون مهتمة في عرض #429 من .NET ROCKS ، مقابلة مع مايكل فورد. إليك مقتطفات ذات صلة من نسخة طبق الأصل:

اللغات الديناميكية أسهل بكثير في الاختبار ، فهي مناسبة حقًا لنهج التطوير الذي يحركه الاختبار الذي كان المطورون يأخذونه في ذلك الوقت. لكنني افترضت أنه لأسباب تتعلق بالأداء ، سيتعين عليهم إعادة كتابة في C# في مرحلة ما ، وبعد ثلاث سنوات وبعد سنوات ، حصلنا على 40،000 سطر من رمز IronPython ، لدينا حوالي 140.000 سطر في رمز الاختبار ، لدينا حصلت على نوع من حوالي 300 سطر من C# وفي كل مرة يأتون للنظر في الأداء ، في كل مرة يأتون فيها وقالوا تحديد موقع عملية لا تعمل بسرعة كافية ، لقد تمكنا من الحصول على السرعة التي نحتاجها من خلال تحسين الخوارزميات لدينا ، من خلال تحسين رمز Python وعدم الاضطرار إلى الانخفاض في C#، والأسباب التي يتم تشغيلها بطيئًا ليست عادة خطأ اللغة ، إنها خطأ المبرمج ، المطور.

كما يمكنك استخدام بوو. هنا عينة Tetris Silverlight مع Boo

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top