كيفية تحسين وقت مسح صندوق البريد في ممثلي Scala

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

  •  28-09-2019
  •  | 
  •  

سؤال

لقد أنشأت مثالًا يلي الجهات الفاعلة في سكالا: http://pastebin.com/pa3wvpkyبدون اختناق (تقليل عدد رسائل SendMoney) التي تحدث في السطور:

val processed = iterations - counter.getCount/2
if (processed < i - banksCount * 5) Thread.sleep(1)

تعتبر معالجة الرسائل في هذا الاختبار بطيئة جدًا (خاصةً عندما يكون هناك عدد قليل من الجهات الفاعلة المصرفية).

ذلك لأن صناديق بريد الجهات الفاعلة مليئة برسائل SendMoney واستلام رسائل ReadAccountSponse يستغرق وقتًا طويلاً (عادة ما تكون في نهاية صندوق البريد تقريبًا ، ويجب فحص صندوق البريد بالكامل). كيفية تحسين وقت مسح صندوق البريد في مثل هذه الحالات؟ ربما هناك إمكانية لتحديد بعض الرسائل بأولوية عالية؟ سيكون من الرائع أن يكون لديك صناديق بريد - واحدة للرسائل المعتادة والآخر للرسائل ذات الأولوية العالية. يمكن فحص صندوق البريد ذي الأولوية العالية أولاً. كما يمكن أن ترسل طريقة "الرد" رسائل إلى صندوق بريد الأولوية العالي تلقائيًا. أو ربما إنشاء صناديق بريد - للرسائل والردود المعتادة؟ ما هو شابك؟

تحياتي wojciech durczyński

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

المحلول

أحد الحلول التي يحتمل أن تكون جيدة لهذه المشكلة هي فيليب هالر وظائف شفافة, ، حيث يكشف برنامج التحويل البرمجي Scala بشكل عكسي معلومات حول أنواع الكائنات التي يمكن أن يتطابق تعبير المطابقة. بعد ذلك ، يمكن فهرسة صناديق بريد الممثلين حسب فئة الرسائل ويمكن أن تكون البحث أسرع بشكل كبير ، خاصة في هذا النوع من سيناريو "الإبرة في كومة القش".

ها هي API للترجمة, ، كما ترون أنه واضح ومباشر. يبدو مثل مشروع شفاف لقد كان في حالة توقف لحظة ، دعونا نأمل أن يلتقط مرة أخرى قريبًا!

نصائح أخرى

أعتقد أن الممثلين في LIFT لديهم هذا تحديد الأولويات المدمج بالضبط: بدلاً من تجاوز طريقة "ACT" واحدة ، هناك عدد من الطرق المختلفة (غير متأكد من الأسماء الدقيقة) والتي يمكن تنفيذها اعتمادًا على أولوية الإجراء.

لست متأكدًا مما إذا كان هذا يحل مسح التباطؤ قضية رغم ذلك

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