سؤال

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

4 test executions
2 threads
36ms overall time

- idle
* test execution
       5ms    9ms     4ms      13ms
T1  |-*****-*********-****-*************-|
      3ms  6ms     7ms      11ms
T2  |-***-******-*******-***********-----|
    <-----------------36ms--------------->

في الوقت الحالي أحسب الإنتاجية (في الثانية) بالطريقة التالية: 1000 / overallTime * threadCount.

ولكن هناك مشكلة.ماذا لو أكمل أحد المواضيع اختباراته بسرعة أكبر (لأي سبب كان):

      3ms 3ms 3ms 3ms
T1  |-***-***-***-***----------------|
      3ms  6ms     7ms      11ms
T2  |-***-******-*******-***********-|
    <--------------32ms-------------->

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

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

المحلول

ماذا عن throughput[t] = numberOfTests[t] / overallTime[t] بشكل منفصل لكل موضوع t, ، ثم احسب متوسط ​​الكل throughput?

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

نصائح أخرى

أعلم أن الوقت متأخر بعض الشيء ، لكن لديّ منشوران مدونة مرتبطان بسؤالك. الأول يصف كيف تقيس الإنتاجية (ووقت الاستجابة). الثاني يصف طريقة لإنتاجية الرسم البياني.

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