Telerik OpenAccess مقابل SubSonic في اختبار السرعة البسيط (وليس "أيهما أفضل")

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

سؤال

لقد كنت أستخدم SubSonic 2 منذ حوالي 5 سنوات حتى الآن وقد أحببته. ومع ذلك ، خلال الأشهر الستة الماضية ، كنت أفكر في الانتقال إما إلى SubSonic 3 أو إلى أداة ORM مماثلة. نظرًا لأن شركتي تستخدم الكثير من أدوات Telerik ، فقد اعتقدت أنني سأحاول OpenAccess. بعد تكوينه ، اعتقدت أنني سأحاول مهمة أساسية للغاية تتمثل في تحميل RadGrid بمعلومات من جدول المستخدمين لدينا (حوالي 30 سجلًا).

لذلك ، ضمن حدث OnNeedDataSource الخاص بـ Grid ، لدي ما يلي: Genacodicetagpre

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

ثم أدخلت كود SubSonic:

Genacodicetagpre

أقوم بتشغيل الكود لأول مرة ويقول إنه استغرق 171 مللي ثانية. بعد تحديث الصفحة ، تفيد بأن الأمر استغرق 60-70 مللي ثانية.

حسنًا ، سؤالي هو: لماذا يستغرق OA وقتًا أطول للتحميل في الزيارة الأولى ، ولكن لا يستغرق تحميل أي ثانية عند تحديث كل صفحة؟ بينما يكون SubSonic أسرع بشكل ملحوظ في الزيارة الأولى ، ولكنه يستغرق حوالي 65 مللي ثانية في كل تحديث للصفحة؟

أعتذر إذا كان هذا سؤالًا "أساسيًا" أو إذا لم أختبر الأداء بشكل كافٍ. إذا كانت هناك أية طريقة لتحسين هذه الطريقة ، فسأكون ممتنًا للغاية لأي نصيحة.

شكرًا ، أندرو

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

المحلول

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

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

قد يكون التحسين هو التأكد من تهيئة النموذج في معالج بدء التطبيق.يجب أن تفي الكود التالي بالغرض. Genacodicetagpre

التحرير: كمتابعة ، تقول 0 مللي ثانية ، وهذا ليس وقت تنفيذ الاستعلام في الواقع.ما يعيده الاستعلام هو IQueryable يتم تنفيذه لاحقًا.يجب عليك استدعاء ToList () للحصول على بيانات حقيقية.

نصائح أخرى

قد يكون السبب هو أن فتح قاعدة بيانات في OpenAccess يستغرق وقتًا أطول مما هو عليه في SubSonic.حاول إجراء عملية بسيطة مثل الحصول على عدد فقط لفتح قاعدة البيانات قبل قياس وقت التحميل.افعل الشيء نفسه في SubSonic أيضًا. Genacodicetagpre

توماس

لا أعرف ما إذا كان هذا خارج الموضوع ، لكنني كنت أستخدم SS2 و SS3 وأساهم فيهما على مدار السنوات القليلة الماضية. لقد أكملت للتو عملية إصلاح شاملة وأضفت MsAccessProvider إلى SS2 ، ومولدات Enum إلى SS2 و SS3 (وهما ملتزمان ومباشران في صفحة المشروع).

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

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

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