Saturday, February 03, 2007

تحسين اداء التطبيق 1


بسم الله الرحمن الرحيم

سلام عليكم

هذه سلسلة جديدة من المواضيع و التى تتحدث عن تحسين الأداء
فى المقالات التى سوف تنشر سوف تكون مصدرها الأساسي كتاب
VTune Performance Analyzer Essentials , هذه النوعيه من المواضيع قليلة جدا و نادرة فى المجتمع العربي, لذلك أتمنى من الله أن يعطيني القوه لأكمل ما بدأت
أول شئ لابد أن نعرفه عندما نبدأ بالحديث عن الأداء و أهميته, لابد و أن بتطرق الى ذهننا الى القياس, لان الأدء من أحد أهم العوامل المتعلقه بالقياس, بمعنى أخر يمكن قياس مدى جودة التطبيق بقياس أستهلاك الموارد التى يحتاجها التطبيق, و لكن ما هو الأداء أصلا, يمكن تعريف الأداء بأكثر من تعريف , و لكني أفضل أبسطهم و هو محاولة أستهلاك موارد بشكل حيكم و بدون تبذير
ما سوف أتحدث عنه يحتاج الى خبره فى البرمجة "بأي لغه", و لكن يفضل ان تكون هذه اللغه من اللغات التى يمكن التعامل معها بوسطة Intel Vtune Performance analyzer , و هذه الأداة تعمل بشكل جيد على مجموعة اللغات التى تأتى مع فيجوال ستوديو بالاضافه الى أنه تتعامل مع نظم التشغيل أخرى مثل لينكس و تدعم الأداة لغة السي , نعود مرة أخرى لموضوع تحسين الأداء , أهم شئ فى عملية تسحين الأداء هو عمل قياسات مسترة لتطبيقك, لتعرف ما هى حالة التطبيق , هل يتحسن مع التعديلات و الأضافات أم يتجه للأسوء, توفير للوقت أقترحت عليك أستعمال الأداة "في تيون" لان هذه توفر الكثير من الأمكانيات التى لن تجدها فى أى طريقة لتحسين الأداء أو برامج التنقيح, تقوم اداة تحليل الأداء بعمل رائع جدا و يوفر الكثير من العناء على المطور , هو تجميع بيانات حول حالة التطبيق, للوهله الأولى سوف تقول "يمكنني عمل كود يقوم بمتابعة البرنامج و أعطاء تقرير" هذه الطريقة مفيدة الى حد ما و لكن لها عيوب كثير جدا أولها أن هذه التقرير تكون كبيرة جدا و أكثرمن اللازم بالأضافة الى أن مثل هذه التقارير تسبب عدم عمل البرنامج بشكل صحيح حيث أن التطبيق يكون مثقل بهذا الكود الذي يقوم بعمل التقرير, بالنسبة لمحلل الأداء من أنتل فأن الوضع مختلف تماما, فان الأداة بشكل مبدأى تقوم بتجميع أنواع مختلفه من البيانات و التى تعتمد على متغيرات مختلفة, هذه الأداة لاتؤثر فى عمل التطبيق أطلاقا بمعني أخر أن هذه الاداة تقوم بتجميع البيانات بدون أن تسبب تأخير أو تعطيل فى التطبيق, التقرير يمكن بعد ذلك مقارنتها بكل بساطه و الحصول على بعض التنويهات و الملاحظات التى تساعدك فى تحسين أداء تطبيقك.
الأن لابد و أن نعرف شئ صغير جدا وهو ان أستعملك لأدوات تحليل الأداء سوف يوصلك فى نهاية الطريق الى مقطع من الكود الذي يحتاج الى أصلاح و تعديل ليعمل بشكل أفضل,يقوم "في تيون" بتوفير بعض الادوات التى تساهم فى جعل حياة المطور أسهل و أفضل من ناحية تحسين أداء التطبيق و هما كالأتى,
- شجرة النداءات Call Graph
- تجميع العينات المعتمد على الأحداث Event Based Sampling
- تجميع العينات المعتمد على الوقت Time Based Sampling
- مراقبة العدادات Counter Monitor
- مساعد الضبط و التحسين Tuning Assistant

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

أسبب أستخدام هذه الأدوات و مناهج التعامل مع أدوات تحسين الادء؟

- طريقة دورة التطوير Development Cycle
فى هذه الطريقة سوف تجد من المناسب جدا أستعمال أدوات تحسين الأدء كما هو فى الحالات التاليه
- فى حالة تحويل البرنامج من لغه الى لغه أخرى Porting
- فى حالة البحث عن اداء أفضل للتطبيق

-طريقة مركزية الأداء Performance Centric
وهنا المقصود أن يكون الأدء هو أهم عنصر من عناصر التطبيق بحيث يكون الأداء العالى أحد المتطلبات الرئيسية فى التطبيق و هنا يكون لدينا عدة حالات و التى تطلب أن يكون الأداء هو المحور الأثاثي فى التطوير
- يجب رفع الأداء: عندما يكون أهم عنصر فى التطبيق هو رفع الأدء, على سبيل المثال الصارف الألى ATM لا يمكن أن ندع المستخدم ينتظر كثيرا, فى هذه الحالة لابد الأهتمام بسرعة التطبيق و الأستعمال الأمثل للموارد.
- عندما تريد أن لا تخسر أداء تطبيقك , فى بعض الحالات يكون لديك تطبيق يعمل بشكل جيد و المطلوب أضافة بعض الميزات الجديدة على التطبيق و التى تفيد المستخدم, من المهم جدا هنا انه عند أذافة هذه الميزات الجديدة ان لا يفقد التطبيق الميزات القديمة و عملها بنفس الكفاءة, هذه الحالة يقع فيها الجميع حيث يثقل التطبيق بالكثير من الميزات و التى تؤثر سلبا على التطبيق و تسبب فشله فى بعض الأحيان, المغزى هنا انه عندما تقوم بأضافة مميزات جديدة كن حذرا بحيث يكون التطبيق بحالته القديمة أى لا يفقد الأداء الذي كان يعمل به بالأضافة الى ممميزات جديدة

3 comments:

Anonymous said...

بداية رائعة من محترف أروع ..

أرجو أن تستمر و نكون من المتابعين لهذه المقالات ..

لدي سؤال واحد على المقال ..

أنا مازلت في طور الدراسة الجامعية .. و عندما نتكلم ( في الجامعة ) عن الأداء فنحن نتكلم عن كفاءة الخوارزميات المستخدمة مع بنى البيانات التي استخدمناها ..

و سؤالي هو ما الفرق بين ما نفعله و بين ما تفعله هذه البرامج الذي ذكرتها ( لم يسبق لي أن استخدمت أحدها ) كـ Intel VTune ؟

تحياتي ..

منقول من
http://www.arabteam2000-forum.com/index.php?s=&showtopic=118317&view=findpost&p=596228

Anonymous said...

Hello! I read this article! Big thanks to author, very interesting. Write more.

Ahmed Essam said...

سلام عليكم

أخواني و الله أنا نفسي أكمل بس فى سببين موقفني
أولا : أنا مشغول جدا
ثانيا : لا يوجد أدنى أهتمام بمثل هذه المواضيع
ربنا معانا أن شاء الله يكون فى جديد قريبا أن شاء الله