هل فكرة مشروع Java هذه عملية؟ (جدولة الخيط وتحسين سرب الجسيمات)

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

سؤال

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

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

بالطبع سيكون هناك المزيد من المعلمات ، مثل الأولويات التي ستتغير أثناء التشغيل لإيجاد وظيفة أولوية مثالية.

ما مدى العملية والمثيرة للاهتمام؟ وأي اقتراحات. فقط بعض الخلفية ، تم برمجة البرمجة في Java/C/C ++ لبضع سنوات حتى الآن مع العديد من المشاريع ، وسيقوم بديل آخر بإجراء جدولة مؤشرات الترابط بناءً على هذا في C ، حيث يكون جدولة مؤشرات الترابط الافتراضية هو نظام التشغيل.

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

المحلول

أفضل طريقة لمعرفة ذلك - بدء مشروع مفتوح المصدر ورؤية استخدام/رد فعل الناس.

يبدو الأمر ممتعًا جدًا بالنسبة لي - لكني شخصيا لا تجدها مفيدة للغاية. ربما لسنا فقط في النقطة التي تكون فيها البرمجة المتزامنة سائدة وسهلة قدر الإمكان.

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

من تجربتي الشخصية ، يمكن حل معظم مشاكل الأداء في البرامج عن طريق تحسين منطقة عنق الزجاجة الواحدة التي تمثل 90 ٪ من التباطؤ. قد يساعد هذا المُحسن في العثور على ذلك. لست متأكدًا من مقدار استراتيجية الجدولة التي يمكن أن تحسن الأداء العام.

لا تشعر بالإحباط ، رغم ذلك! أنا فقط أتحدث من الهواء الرقيق. يبدو الأمر ممتعًا ، فلماذا لا تلعب معها على أي حال :)

نصائح أخرى

نهجك كما هو موضح هو نهج ثابت ، أي أنك تحتاج إلى تشغيل البرنامج عدة مرات ، ثم الخروج بحل جدولة ، ثم شحن معلومات الجدولة الخاصة بك مع البرنامج.

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

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

أعتقد أن هذا سؤال شخصي إلى حد ما ، لكن بشكل عام لا ، لا أعتقد أنه سيعمل.

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