كيفية إجراء اختبارات الأداء على المكتبات المكتوبة بلغات البرمجة المختلفة؟

StackOverflow https://stackoverflow.com/questions/789376

سؤال

المشكلة هي: بالنظر إلى عدد من مكتبات البرمجة مع نطاق مشابه أو متساوي (مثل محلل XML، Regex، Markup، ...)؛ هل هناك أدوات، والتي يمكن للمرء إجراء اختبارات الأداء على هذه المكتبات ومقارنة (وتوليد التقارير)، على الرغم من أن المكتبات قد تتم كتابة لغات برمجة مختلفة (مثل Java، C #، Ruby، Python، Perl، ...) ب

نظرت إلى هذه Opensourcetesting.org/performance.php., ، ولكن لا شيء منهم مزود بمتطلبات (ضبابية إلى حد ما) أعلاه.

هل هناك مجموعات أدوات أو أطر هناك اختبارات الأداء عبر اللغة عبر اللغات؟

شكرًا.

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

المحلول

لن أحاول استخدام مجموعة أدوات واحدة لغات متعددة. من غير المرجح أن تبرز أفضل (أو حتى المتوسط) لكل تطبيق.

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

هذا هو النهج الذي اتخذته للحصول على مخازن بروتوكول القياس. حتى الآن يحتوي إطاري الأساسي للغاية على تطبيقات في C # و Java، وأنا أكتب الآن إطارا أكثر ثراء يسمح بتشغيل "برنامج نصي معيار" كليا. هدف واحد مثالي هو أن تطبيقات مختلفة داخل نفس المنصة (مثل تطبيقات .NET مختلفة من مخازن المخازن المؤقتة البروتوكول) يجب أن تكون قادرة على ربطها في نفس رمز القياس الأساسي مع القليل جدا من الجهد.

الشيء المهم، إلى ذهني، هو الحصول على مجموعة مشتركة من العمليات (حتى لو لم تكن كذلك الكل التي تنفذها الكل المكتبات) ومجموعة بيانات مشتركة. هذه هي الطريقة الوحيدة التي يمكن أن تكون المعايير ذات معنى.

نصائح أخرى

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

القدرات تعتمد كثيرا على اللغة المستخدمة.

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

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

لذلك، إذا كان الأداء أهم شيء لتطبيقك، فإن أفضل شيء للقيام به IMO هو إنشاء واجهة للعمليات التي ترغب في استيرادها، ثم البرنامج المساعد / خارج المكتبات وترى الاختلافات في المعايير الحقيقية، معاييرك التطبيق في العمل، وليس بعض الرياضيات الأثرية أمبو جمبو ...

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