الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

أى الكودين أفضل

بدأه islambase@yahoo.com في 24 أكتوبر 2008 · 14 رد · 1,948 مشاهدة · في هندسة البرمجيات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

اخوانى الأعزاء

السلام عليكــم ورحمـة الله وبركاتــة

لو أنك مثلآ عرض عليك برنامجين للكتابة مثلآ أو برنامجين للرسم أو غيره

ووجدت كلا البرنامجين يؤدى معك نفس الغرض المطلوب منه وبنفس درجة السهولة فى تعاملك معه

فأيهما تختار؟

لابد وأنك ستختار الأسهل والأفضل على الكمبيوتر . أى ستبحث عن size كل منهما وتختار أقلهما سعة</SPAN>

سؤال يواجهنى كثيرآ فى كثير من برامجى

ان كان لعمل البرنامج أكثر من كود وجميعهم صحيح ويوصل الى النتيجة المطلوبة من البرنامج عند عمل الrun

فكيف أعرف أى من هذه الأكواد أسهل وأفضل على الكمبيوتر ؟

أرجو ألا يقول أحدكم (أرسل مشروعك لنقول لك أى الكودين أفضل) لأن هذا السؤال يواجهنى كثيرآ كما ذكرت سابقآ وأنا أريد طريقة عامة أستطيع بها أن أحكم أى من هذه الأكواد أسهل وأفضل على الكمبيوتر

ولكم ألف شكر

</SPAN>

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

السلام عليكــم ورحمـة الله وبركاتــة ،،

الحمدلله والصلاة والسلام على رسول الله وعلى آله وصحبه أجمعين

شكراً لك اخي الكريم

#2

بالوصول الى نهاية الطريق : بأقصر الطرق و الاعتماد على نفسك

عندما تكون اقل استهلاكاً لموارد الجهاز

مثلا ان تقلل قدر الامكان من ادواتك و الاعتماد على الادوات الخارجية

تستطيع الوصل للرقم 100 بجمع 20+20 ثم +20 ثم +20ثم20 وكذلك بالطريقة 20*5 بالتاكيد الثانية ستكون افضل يعني

لا تخلي برنامجك يفكر كتير مادم الحل موجود بنفس المردود و يوصلك للمقصود

ألا بذكر الله تطمئن القلوب

#3

كل هذا مفهوم ومعروف يا أخى

ولكنى أريد طريقة عامة أستطيع بها أن أحكم أى من هذه الأكواد هى التى اقل استهلاكاً لموارد الجهاز </SPAN></SPAN> و لا تخلي برنامجك يفكر كتير

ففى مثالك كان الحل الأفضل واضح ولا يحتاج لهذه الطريقة التى أبحث عنها

ولكن فى أحيان أخرى كثيرة لم يكن الحل الأفضل واضحآ هكذا

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

السلام عليكــم ورحمـة الله وبركاتــة ،،

الحمدلله والصلاة والسلام على رسول الله وعلى آله وصحبه أجمعين

شكراً لك اخي الكريم

#4

الطرق العامة الواضحة :

بعد تشغيل برنامجك ستعرف استهلاكه للموارد من ادارة المهام كخطوة اولية فقلل منه

حجم برنامجك قلل منه بتقليل الادوات المستخدمة ما كانت تستطيع الاستغناء عنها

التقليل من الاستخدام لادوات الاكتف اكس

.................................

اما ككود فالتاكيد العملية بالنظر و التفكير في الكود ام ان اضع لك حصر لها فالامر صعب

يعني اقول لك مثلا استغني عن if او do أو أو أو فالقضية واسعة

لكن يجب عليك ان تميز الكود تعاملك معه

.............

هل يمكن ان تطرح كود من الفئة التي تتحدث عنها كمثال !!

ألا بذكر الله تطمئن القلوب

#5
اقتباس
الطرق العامة الواضحة :

بعد تشغيل برنامجك ستعرف استهلاكه للموارد من ادارة المهام كخطوة اولية فقلل منه

يبدو أن هذه طريقة من الطرق التى أريدها

ولكن ليتك تشرحها لى بشئ من التفصيل

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

ان أمكنك ذلك

ولكم ألف شكر

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

السلام عليكــم ورحمـة الله وبركاتــة ،،

الحمدلله والصلاة والسلام على رسول الله وعلى آله وصحبه أجمعين

شكراً لك اخي الكريم

#6

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

السلام عليكــم ورحمـة الله وبركاتــة

أوفى وكفى أستاذنا الفاضل

المزمجر

-----------

وهناك بعض المعايير في التمييز بين الطريقتين المتشابهتين اللتين تشغِّلان برنامجاً واحداً :

1- الوصول إلى الأمر المراد بأسهل الطريقتين .

2-السرعة عند الأداء

3-تدارك جميع الأخطاء الناجمة عن بعض الأوامر ، والتي قد تسبِّب تأخيراً في جلب البيانات على سبيل المثال ، أو خطأً من نوعٍ ما

4-الإلمام ببعض المخاطر المترتِّبة على بعض دوالِّ المكتبات الديناميكيَّة ، وخاصَّةً عند الجهل ببعض مساوئها

---------

هذا والله أعلم

ولو دقَّقت النظر أكثر لربَّما وجدت فوارق أخرى

أخوك

د.أنس عبَّاس

#7

أخى د/ أنس عباس

كل هذا مفهوم ومعروف يا أخى

ولكنى أريد الطريقة التى أستطيع بها أن أحكم أى من هذه الأكواد هى التى تؤدى الى الوصول إلى الأمر المراد بأسهل الطريقتين وبالسرعة عند الأداء

أى كيف أقيس هذه السرعة أوهذه السهولة؟

</SPAN>

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

السلام عليكــم ورحمـة الله وبركاتــة ،،

الحمدلله والصلاة والسلام على رسول الله وعلى آله وصحبه أجمعين

شكراً لك اخي الكريم

#8

1- التجربة خير برهانٍ

2-والممارسة ومواصلة البحث العلميّ خير سبيلٍ موصلٍ إلى الإبداع

والله أعلم

أنا من وجهة نظري

أن تطرح برنامجاً واحداً معمولاً بكودين مختلفين - تختاره أنت - ، ثمَّ بعد ذلك تطرح السؤال ذاته على إخواننا الأفاضل في هذا المنتدى لتسمع ترجيحاتهم ووجهات نظرهم ، ومن ثمَّ ستتبيَّن لك من خلال وجهات النظر تلك الآراء والتوجيهات

#9

أخى د/ أنس عباس

اذآ فأنت مثلى لا تعرف كيفية قياس هذه السرعة أوالسهولة

أخى المزمجر

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

ولكم ألف شكر

أخى المزمجر

ليتك تشرح لى بشئ من التفصيل الطريقة التى ذكرتها لى سابقآ

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

ولكم ألف شكر</SPAN>

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

السلام عليكــم ورحمـة الله وبركاتــة ،،

الحمدلله والصلاة والسلام على رسول الله وعلى آله وصحبه أجمعين

شكراً لك اخي الكريم

#10

السلام عليكــم ورحمـة الله وبركاتــة

نصف العلم

لا أعلم

--------

ومن قال :

لا أعلم

فقد أفتى

--------

أنا أعطيك مثالاً واقعيّاً لكي تكون مع الواقع البرمجيِّ لا من جهة الجانب النظريّ فحسب

فعلى سبيل المثال :

الربط بأدوات الربط بين الأكسس والفيجوال بيسك

يكون بطرقٍ متعدِّدةٍ :

1- منها على سبيل المثال بالداتا

2- ومنا بالأدودك

3-ومنها بالداو

4- ومنها بالأدو

---

فأنا أسألك بأيٍّ منها تختار ؟ ولماذا ؟

أنا من خلال ممارستي المتواضعة أرشِّح الرابعة

ستسألني لماذا ؟

ربَّما الشرح يطول ...

ولكنِّي ربَّما أحيلك إلى شرح غيري ، اختصاراً للموضوع واجتناباً للملل ...

أقول : تظافرت أقوال المتقدِّمين من أساتذتنا المبرمجين على أنَّ الطريقة الرابعة المشار إليها هي خير طريقةٍ ناجعةٍ لعمليَّة الربط بين الفيجوال بيسك 6 والأكسس ...

----------

------

أرجو أن لا أكون قد أزعجتك بإطالة الشرح

فغايتي طلب العلم

والحكمة ضالَّة المؤمن أينما وجدها فهو أحقُّ بها

أخوك

العبد الفقير إلى عفو ربِّه

د.أنس

#11

بارك الله فيك أخي الفاضل د أنس عباس

أخي islambase

قصدت بكلامي حول الموارد هو مدير المهام task manger فبعد ان تظهر بالضغط على ctr &alt $del

ستجد عدة تبويبات الاول للتطبيقات و الثاني للعمليات وستجد برنامجك فيه طبعا بعد فتح البرنامج اولا

اقراء الارقام بالنسبة لاستخدام برنامجك للذاكرة وستعرف استهلاكه لها

وسترى ان الزيادة ستكون اكبر في حال استخدمت صور عالية الدقة في برنامجك كمثال صغير فكلما قللت من استهلاكه كان الامر افضل

ألا بذكر الله تطمئن القلوب

#12

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

كما ذكر الأخ الفاضل المزمجر عن طريق البروسس يمكنك أداء البرنامج وهو يعمل في الذاكرة

ويمكنك بتحليل برنامجك معرفة أن أداءه أسرع في تنفيذ الأكواد فكلما زادت أسطر الأكواد وزادت الأجراءات قلت سرعة أداءه وهذا الأمر تعرفه

وأستخدام المصفوفات له دور كبير للتقليص من حجم وزيادة سرعة البرنامج

وأيضا يمكن من خصائص مشروعك يمكنك أختيار Compile

وفيه بعض الخيارات للتقليل من استهلاك موارد النظام ،يعني ستصبح سرعة تنفيذ البرنامج أسرع

الخيار Optimize for Fast Code وهو لزيادة سرعة أداء البرنامج

والخيار Favor Pentium Pro لزيادة سرعة أداء البرنامج ولكن لنوع المعالج المذكور فقط

ويمكنك الدخول Advanced Optimization ففيه خيارات تزيد من سرعة الأداء

post-94167-1225047396_thumb.jpg

تم تعديل هذه المشاركة بواسطة عبد العزيز اليوسفي في 26 أكتوبر 2008 في 22:16

#13

هناك برامج تدعى profilers مخصصة لقياس أداء الكود.

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

#14

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

السلام عليكــم ورحمـة الله وبركاتــة

الموضوع شيق وجميل .. إسمحولي الإنضمام إليكم :P

و بخصوص قواعد البيانات والإتصال بها فمؤيد للـ د أنس عباس

وهناك أيضا ما هو ليس بإتصال لقواعد بيانات ويمكن تنفيذه بأي من الطرق API أو VBA أو WMI

ويبدوا لنا أن الـ API أسرع من الـ VBA والـ VBA أسرع من الـ WMI .. ولكن هل هي قاعدة ؟؟

بالطبع لا ويمكن أن نكتب Procedure واحد يحوي الثلاث طرق أو أكثر إن جد أو زاد

ولكن كيف لنا أن نعرف أفضل أمر يمكن إستخدامه .. بالطبع كما قال الأخ المزمجر من ناحية الـ Task Manger

السؤال الذي يطرح نفسه الآن .. ما هي أدق طريقة يمكننا مقارنة الأوامر بها ؟؟

بالبديهي أننا إذا قمنا بإجراء عملية حسابية وإستغرقت خمس دقائق وأخرى أستغرقت دقيقة فصاحبة الدقيقة أقل جهدا على الـ Processor

إذا لما لا نفكر في الوقت .. تحول السؤال الآن إلى كيف يتم قياس فترة تنفيذ أمر أو مجموعة آوامر ؟؟

وهل يكفي تنفيذ الأمر مره واحده لمعرفة فترته الزمنية ؟

الشق الأول من السؤال السابق إجابته بالشكل التالي



TMPTimer = Timer

Call MYProc()

MsgBox Format(Timer - TMPTimer, "0.000")
	Dim TMPTimer As Double

أما الشق الثاني فقد يبدو لنا أن الأمر لا يأخذ أي وقت .. فكيف نحكم عليه إلا بعد تكراره .. أي مثلا هكذا



TMPTimer = Timer

For i = 1 To 500
Call MYProc()
Next

MsgBox Format(Timer - TMPTimer, "0.000")
	Dim TMPTimer As Double

وكما أن مرة واحده لإجراء الأمر غير كافية .. أيضا فمره واحده من المقارنة غير كافية

يجب عليك المقارنة عدة مرات متتالية وإستنتاج متوسط الوقت المستنفذ بين كل من الأمرين

وليكن الحكم على هذا المتوسط !..

ومرفق مثال لما سبق ذكره

Speed_Compare.rar

اعتذر عن عدم تمكني للمتابعه الدورية في وقتنا الحالي

فليقبل الجميع تقديري واحترامي .. ولكم تحياتي

#15
اقتباس
أخي islambase

قصدت بكلامي حول الموارد هو مدير المهام task manger فبعد ان تظهر بالضغط على ctr &alt $del

ستجد عدة تبويبات الاول للتطبيقات و الثاني للعمليات وستجد برنامجك فيه طبعا بعد فتح البرنامج اولا

اقراء الارقام بالنسبة لاستخدام برنامجك للذاكرة وستعرف استهلاكه لها

جزاك الله خيرآ أخى المزمجر

هذا ما أبحث عنه من زمان

كيف أقيس هذه السرعة أوهذه السهولة؟

أما كل هذه النصائح والتوجيهات لكى يكون برنامجى أسرع وأسهل فأنا أعرفها جيدآ

ولك ألف مليون شكر

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

السلام عليكــم ورحمـة الله وبركاتــة ،،

الحمدلله والصلاة والسلام على رسول الله وعلى آله وصحبه أجمعين

شكراً لك اخي الكريم

مواضيع مشابهة