سؤال

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

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

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

وأي الضوء على هذا الموضوع سيكون محل تقدير كبير.

وشكرا.

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

المحلول

لقد تغير الوضع قليلا مع ظهور صافي 4.5.

ويمكنك الآن تزيين الأسلوب مع السمة <لأ href = "http://msdn.microsoft.com/en-us/library/system.runtime.compilerservices.methodimploptions٪28v=vs.110٪29.aspx "يختلط =" نوفولو "> [MethodImplAttribute(MethodImplOptions.AggressiveInlining)] الذي سوف يؤدي إلى أن inlined من قبل JIT إذا كان ذلك ممكنا.

وانظر <لأ href = "http://blogs.microsoft.co.il/blogs/sasha/archive/2012/01/20/aggressive-inlining-in-the-clr-4-5-jit.aspx "يختلط =" نوفولو "> هذا بلوق للحصول على مزيد من التفاصيل.

نصائح أخرى

والجواب باختصار: لا

والإجابة الطويلة: HTTP: //blogs.msdn. كوم / ericgu / أرشيف / 2004/01/29 / 64644.aspx

ومعايير رمز مصدر: HTTP: //blogs.msdn كوم / davidnotario / أرشيف / 2004/11/01 / 250398.aspx و <لأ href = "http://blogs.msdn.com/ericgu/archive/2004/01/29/64717.aspx" يختلط = "نوفولو noreferrer"> http://blogs.msdn.com/ericgu/archive/2004/01/29/64717.aspx

لاحظ أنه في الروابط الماضيين حول معايير رمز مصدر، واحد عن البنيات عدم inlines هو خارج نطاق التاريخ؛ ويمكن الاطلاع على معلومات محدثة على العنوان التالي: <لأ href = "http://blogs.msdn.com/vancem/archive/2008/05/12/what-s-coming-in-net-runtime-performance-in-version- v3-5-sp1.aspx "يختلط =" نوفولو noreferrer "> http://blogs.msdn.com/vancem/archive/2008/05/12/what-s-coming-in-net-runtime-performance-in -version-v3-5-sp1.aspx

وأنا في الآونة الأخيرة وقيم هذا:

http://www.gfilter.net/junk/BubblesortBenchmark.jpg (العالي هو أسوأ)

وكما يمكنك أن تقول، وCLR وJVM على حد سواء أفضل بكثير في أسلوب رمز مصدر من أي وقت مضى كنت سوف يكون.

if(performance < ACCEPTABLE){
   if(profiler.showsAffectOfMethodCallOverhead() && seriouslyWeDoubleChecked()){
      if(runtimeContext.isReallyStableAndNotProneToChange() && weNeedToGetThisThingBatOutOfHellFast()){
          return thisIsOneOfTheFewTimesWhenANativeExternalFunctionMayBeWorthIt();
      }
   }
 }
 return dontWorryAboutIt();

إذا كنت تنفيذ هذا الطريق نادر، الخروج الخاص بك C أو ASM.

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