سؤال

وأنا أعلم أن .NET هو JIT جمعت إلى العمارة كنت تعمل على قبل التطبيق يعمل ولكن لا JIT compiler تحسين 64 بت ؟

هل هناك أي شيء يجب القيام به أو النظر عند برمجة التطبيق الذي سيتم تشغيل على 64bit system?(أيسوف باستخدام Int64 تحسين الأداء و سوف JIT compiler تلقائيا جعل Int64 العمل على 32bit النظم؟)

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

المحلول

على 64bit JIT مختلفة من واحد ل 32bit, لذا أتوقع بعض الاختلافات في الإخراج ولكن لن التبديل إلى 64bit فقط و لا تتوقع الحصول على الكثير من السرعة (إن وجدت) في وقت وحدة المعالجة المركزية عن طريق التحول إلى 64bit.

ستلاحظ كبير تحسين الأداء إذا كان التطبيق الخاص بك يستخدم الكثير من ذاكرة الكمبيوتر لديه ما يكفي من ذاكرة الوصول العشوائي إلى مواكبة ذلك.لقد وجدت أن 32bit .صافي التطبيقات تميل إلى أن تبدأ برمي من الذاكرة استثناءات عندما تصل إلى حوالي 1.6 gb في الاستخدام ، ولكنها تبدأ للتوصل القرص بسبب الترحيل قبل وقت طويل من ذلك - إذا كنت في نهاية يجري I/O bound.

في الأساس, إذا كنت عنق الزجاجة هو وحدة المعالجة المركزية ثم 64bit من غير المرجح أن تساعد.إذا كان لديك عنق الزجاجة هو الذاكرة ثم يجب أن نرى تحسنا كبيرا.

سوف باستخدام Int64 تحسين الأداء و سوف JIT compiler تلقائيا جعل Int64 العمل على أنظمة 32bit

Int64 يعمل بالفعل على حد سواء 32 بت و 64 بت أنظمة, ولكن سيكون أسرع تعمل على 64bit.حتى إذا كنت في الغالب عدد الطحن مع Int64, يعمل على نظام 64bit ينبغي أن تساعد.

الشيء الأكثر أهمية هو أن قياس الأداء الخاص بك.

نصائح أخرى

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

وقد لاحظت 64 بت يجري أبطأ كثيرا.

كما ذكر 64 بت مترجم JIT يتصرف بشكل مختلف x86 مترجم JIT.X86 مترجم الاستفادة من بعض التحسينات التي x64 واحد لا.

على سبيل المثال في .NET framework 3.5 32-بت JIT سوف مضمنة المكالمات وظيفة مع البنيات كما الحجج ، ولكن 64 بت JIT لا.

في رمز الإنتاج رأيت x86 يبني تشغيل ما يصل إلى 20 ٪ أسرع من x64 يبني (مع أية تغييرات أخرى)

والحاصل استخدام 64 بت فقط إذا

  1. تحتاج ذاكرة إضافية وليس هناك طريقة من حوله.
  2. يمكنك البرنامج مثلاتطبيقات علمية وتحتاج إلى زيادة الدقة الرياضيات

على كل جانب من جوانب أخرى ، اعتبارا من اليوم ، مترجم 64 بت في .صافي خطوة واحدة لأسفل.

تحسينات الأداء يتم في .صافي المجمعين هي قضية كبيرة.

اختناقات الأداء سوف تكون هي نفسها بغض النظر عما إذا كانت العمارة 32 - أو 64 بت.مشاكل الأداء تميل إلى أن تكون نتائج دون المستوى الأمثل الخوارزميات — الاختيار بين 32 - و 64 بت أنواع لن يؤثر بشكل كبير على الأداء.

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

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