مرسى برنامج التحويل البرمجي /القوس والأداء في Visual Studio

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

  •  25-09-2019
  •  | 
  •  

سؤال

لقد لاحظت للتو أنه في مشروعنا تركت علامة "تمكين مجموعة التعليمات المحسّنة" غير مركبة ، وربما مجرد إشراف.

قبل تمكين العلم ، أود أن أسأل ما إذا كان أي شخص قد شاهد أي تحسينات في أداء العالم الحقيقي تمكنه؟

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

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

المحلول

لذلك باختصار: هذا الإعداد يتيح فقط بعض الوظائف الجوهرية التي تعين مباشرة على تعليمات SSE. في برامج C ++ العادية ، لا تستخدم هذه الوظائف الجوهرية ، لذلك لن يحسن هذا الإعداد الأداء.

إذا كنت بحاجة إلى مزيد من الأداء ، فيمكنك محاولة العثور على مترجم يعيد كتابة التعليمات البرمجية الخاصة بك لاستخدام تعليمات SSE (تدعي Intel علبة المترجم) ، ولكن ربما يكون أكثر ذكاءً للذهاب إلى multister (مع OpenMP أو .NET 4.0) ، أو استخدام GPU ، وهو أسرع وأكثر مرونة من SSE.

نصائح أخرى

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

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

أعتقد أنه يجب أن تكون هناك مكتبات تقوم بتحليل قدرات المعالج وتسمح بالتعويض عن الرمز الأمثل. أنا فقط بحاجة إلى بعض الوقت للنظر في الشبكة أيضًا.

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