ASP.NET MVC 3 أداء الحلاقة
-
26-09-2019 - |
سؤال
تحديث مهم: راجع التحديث 5 في الأسفل ، لا توجد مشكلة في الأداء في ASP.NET MVC 3 ، هذه مشكلة معيارية
لقد صنعت مشروع Hello World بسيطًا في ASP.NET MVC2،3 ASPX و 3 Razor ومعارفهم. ما أراه هو:
System Requests per second
-------------------------------------------
asp.net mvc 2 ASPX 4200
asp.net mvc 3 Beta 1 ASPX 3200
asp.net mvc 3 Beta 1 Razor 1700
ما الخطأ في Razor ، إنه بطيء جدًا؟
تحديث:لقد أعادت الاختبار. تستخدم جميع الدلائل الافتراضية الأربعة نفس المجموعة .NET 4 المدمجة في مجموعة تطبيقات الوضع المتكامل. تتم جميع المشاريع مع إضافة مشروع جديد فارغ X وإضافة صفحة واحدة بنص سطر واحد وبدون رمز. يتم تجميع جميع المواقع في وضع الإصدار. نظامي هو Windows 7 ، 4 GB I7 4 CORES. لقد قمت بإجراء الاختبار مرتين للتسخين مع IIS وهذه نتائج التشغيل الثاني. معلمات مقعد Apache: AB -N100000 -C1000 النتائج:
System Requests per second CPU Utilization
----------------------------------------------------
asp.net 4 4780 43%
mcv 2 4322 58%
mvc 3 beta 1 aspx 2324 54%
mvc 3 beta 1 razor 1615 54%
تحديث 2 أجاب سكوت غوثري في مدونته:
لم نقم بتحسين MVC3 بالكامل حتى الآن (عادة ما يكون هناك الكثير من ضبط ذاكرة التخزين المؤقت التي نقوم بها). نتوقع أن يكون Razor نفس الأداء مثل محرك View .aspx قبل إصداره أخيرًا.
System Requests per second CPU Utilization
----------------------------------------------------
mvc 3 rc1 razor 1960 54%
mvc 3 rc2 razor 2187 54%
mvc 3 rc2 aspx 4014 58%
تحديث 5 جميع الاختبارات التي أجريت في وضع الإصدار ولكن المشكلة كانت debug="true"
في ملف الويب الخاص بي. ومن المثير للاهتمام كيف أنه يؤثر فقط على التحف على هذا المقياس. يجب أن يكون هذا في أذهاننا على عمليات النشر.
System Requests per second CPU Utilization
----------------------------------------------------
mvc 3 rc2 razor 3940 58%
mvc 3 rc2 aspx 4100 58%
بفضل فريق ASP.NET MVC ، عمل ممتاز!
المحلول
(إجابة جديدة للرد على أرقام RC2 الخاصة بك)
شكرا للأرقام المحدثة. بضع نقاط:
- تبدو أرقام ASPX جيدة ، بمعنى أننا نتوقع أن يكون MVC3 ASPX على قدم المساواة مع MVC2 ASPX (من المتوقع أن يكون هذا مثالًا أبطأ قليلاً)
- أرقام الحلاقة الخاصة بك تبدو مشبوهة. نحن نعلم أن Razor أبطأ قليلاً من ASPX المكافئ ، ومع ذلك ، يجب أن يكون الفرق أكبر من 5 ٪ -7 ٪. تشير أرقامك إلى أبطأ بنسبة 50 ٪ ، والتي ببساطة لا تتطابق مع نتائجنا. تحقق مما إذا كان المشروع يجمع في الإصدار وكان لديك
debug="false"
تعيين في web.config. - استخدام وحدة المعالجة المركزية الخاصة بك هو مشبوهة بعض الشيء. مع 1000 طلب متزامن يجب استخدام وحدة المعالجة المركزية بنسبة 100 ٪. (حتى 8 طلبات متزامنة فقط يجب أن تكون كافية لأن لديك 8 نوى افتراضية)
- اختباراتك تعمل لمدة 20-25 ثانية. هذا قليلاً على الجانب المنخفض لأن انفجار النشاط القصيرة (1-2 ثانية) في مكان آخر في النظام يمكن أن يتخلص من نتائجك بشكل كبير.
- فيما يتعلق بالنقطة 4 ، هل قمت بتشغيل كل سيناريو مرة أو عدة مرات؟ هل ترى الكثير من التباين في النتائج؟ نظرًا لأن نظام التشغيل الخاص بك يقوم بأشياء أخرى في الخلفية ، فمن المعتاد رؤية نتائج مختلفة بين التشغيل.
نصائح أخرى
كيف قمت بالمعيار؟ هل تم نشر موقعك على IIS في إصدار الوضع؟ هل استخدمت <deployment retail="true" />
قسم في جهازك. تذكر أيضًا أن ASP.NET MVC 3 لا يزال قيد التطوير الثقيل ، لذلك لا يمكنك توقع أن يتم تحسينه بالكامل حتى الآن. على الأقل انتظر حتى يضرب RTM.