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

كيف أقيس أفضلية كود عن آخر

بدأه اسلام الكبابى في 9 أبريل 2012 · 12 رد · 1,026 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

للوصول لغرض معين قد يوجد أكثر من كود (وجميعهم أكواد سليمة تؤدى لنفس النتيجة)

فكيف أقيس أفضلية كود عن آخر(أى كيف أقيس مثلآ سرعة تنفيذ أى كود)

ففى المثال التالى نجد كودين لحساب مجموع الأرقام (7 ، 17 ، 27 ،.......،97)

Private Sub Command1_Click()
For I = 7 To 97 Step 10
TOT = TOT + I
Next I
Print "TOTAL="; TOT
End Sub

Private Sub Command2_Click()
   I = 0: TOT = 0
20 I = I + 1
   If I Mod 10 = 7 Then TOT = TOT + I
50 If I < 97 Then GoTo 20
   Print "TOTAL="; TOT
End Sub

وواضح هنا وضوح الشمس أن الكود الأول أسهل بكثير فى تنفيذة

ولكن فى عمليات أخرى كثيرة قد يوجد أكثر من كود تؤدى لنفس النتيجة ولا يتضح أيهم الأسهل

فكيف أقيس أى الأكواد أسهل

ولكم ألف شكر

#3

اخ اسلام بالنسبة لـ

اقتباس

فكيف أقيس أفضلية كود عن آخر(أى كيف أقيس مثلآ سرعة تنفيذ أى كود)

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

اولا ضع الكود

Private Declare Function timeGetTime Lib "winmm.dll" () As Long

ثم لاحتساب الوقت لتنفيذ الكود

  s = timeGetTime
  الكود
  e = timeGetTime
 timeCode = e- s

اما بالنسبة لجواب الاخ evry1falls

Option Explicit تسخدم لفرض الاعلان او تعريف الـvariables ففي حالة استخدامها ترجع الفيجوال بيسيك رسالة خطأ في حالةاستخدام اي variable بدون تعريف مسبق

والعفو

تم تعديل هذه المشاركة بواسطة realdie10 في 10 أبريل 2012 في 02:13

1

وما من كاتب إلا سيفنى *** ويبقى الدهر ماكتبت يــداه

فلا تكتب بكفك غير شيء *** يسرك في القيامة ان تراه

لا تنسى تشجيعي بالنقر على

add.png اذا كانت مشاركتي مفيدة
#4

طبقت ذلك فلم أجد أى شئ يدلنى أى الكودين أفضل

أو ربما أنى لم أستطع تطبيق ما قلتموه تطبيقآ صحيحآ

فياليت أيكم يطبق هذا الذى قاله على الكود الذى أرسلته لكم

ويرفقه مع رده

ولكم ألف شكر

#5

-

تم تعديل هذه المشاركة بواسطة ali551100 في 11 أبريل 2012 في 00:31

#6
اسلام الكبابى كتب:

طبقت ذلك فلم أجد أى شئ يدلنى أى الكودين أفضل

أو ربما أنى لم أستطع تطبيق ما قلتموه تطبيقآ صحيحآ

فياليت أيكم يطبق هذا الذى قاله على الكود الذى أرسلته لكم

ويرفقه مع رده

ولكم ألف شكر

اخي اصلا كلا الكودين سريعي بحيث التنفيذ يكون في اقل من ملي ثانية لان الاداة timeGetTime ترجع الوقت بالملي ثانية

اضف هذا السطر لتبطيئ عملية التنفيذ حتى تتمكن من المقارنة

For t = 1 To 5000: Next t

بيكون الكودين كالتالي

Private Declare Function timeGetTime Lib "winmm.dll" () As Long

Private Sub Command1_Click()
    s = timeGetTime
    For I = 7 To 97 Step 10
        TOT = TOT + I
        For t = 1 To 5000: Next t
    Next I
    Print "TOTAL="; TOT

    e = timeGetTime
    timeCode = e - s
    Print timeCode

End Sub

Private Sub Command2_Click()
    s = timeGetTime
    I = 0: TOT = 0
20     I = I + 1
    If I Mod 10 = 7 Then TOT = TOT + I
    For t = 1 To 5000: Next t

50     If I < 97 Then GoTo 20
    Print "TOTAL="; TOT

    e = timeGetTime
    timeCode = e - s
    Print timeCode

End Sub

والبرنامج بالمرفق

2.rar

تم تعديل هذه المشاركة بواسطة realdie10 في 11 أبريل 2012 في 00:32

1 −1

وما من كاتب إلا سيفنى *** ويبقى الدهر ماكتبت يــداه

فلا تكتب بكفك غير شيء *** يسرك في القيامة ان تراه

لا تنسى تشجيعي بالنقر على

add.png اذا كانت مشاركتي مفيدة
#7

تمام

بارك الله فيكم

طبقت ذلك فوجدت الفرق فعلآ

ولكن هل تقاس أفضلية كود عن آخر فقط عن طريق سرعة التنفيذ

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

ولكم ألف شكر

#8

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

لو عاوز توصل لرقم 6 .....

ممكن تعمل دالة Function

ممكن تعمل متغير رقمى أو نصى

ممكن تخلى قيمة TextBox مثلا = 6

و فجميع الحالات فى أى وقت هتحتاج للرقم 6 هتجيبه ... لكن أى طريقه فدول أنسب أو أفضل ده يرجع للى انت ناوى تعمله بالرقم (6) فى البرنامج بتاعك .!

Visit Me personally
Visit My Facebook VB Page

فى انتظار تعليقاتكم و اسئلتكم على
Evry1falls (Visual Basic) Plus+

 

 

#9

ماشى

ولكن كيف تقاس هذه الأفضلية ؟

ان لم أستطع تحديدها بنفسى

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

#10
اسلام الكبابى كتب:

ماشى

ولكن كيف تقاس هذه الأفضلية ؟

ان لم أستطع تحديدها بنفسى

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

اخي الافضلية تقاس بعاملين مهمين..

الاول , سرعة التنفيذ

الثاني : استهلاك الذاكرة.

اي ان الاولوية تعطي لسرعة التنفيذ . وبعد ذلك ايضا تقاس كم متغيير تم استخدامه في كلا الكودين , اي الكود الاول كم استخدم من مساحة الذاكرة العشوائية RAM وكم استهلك الكود الثاني.. وهكذا .

تحياتي

OMANI FOR EVER

-------------------------------------------------

post-12787-12780191801974.jpg

-------------------------------------------------

#11
اقتباس

الاول , سرعة التنفيذ

الثاني : استهلاك الذاكرة.

ماشى

ولكن كيف يقاس استهلاك الذاكرة. ؟

هل توجد طريقة تقاس بها كالتى شرحوها لقياس سرعة التنفيذ

#12
اسلام الكبابى كتب:

ماشى

ولكن كيف يقاس استهلاك الذاكرة. ؟

هل توجد طريقة تقاس بها كالتى شرحوها لقياس سرعة التنفيذ

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

هنا بعض المعلومات عن انواع البيانات

وهنا ايضا يوجد معلومات

مثال

Dim A as integer,B as integer,c as integer

a=10
b=20
c=a+b

print c

نفس المثال السابق

Dim A as integer,B as integer

a=10
b=20

print(a+b)

لاحظ معي ان كلا الكودين يخرجان نفس النتيجة .. ولكن الثاني افضل واسرع والسبب.. انه خطط في الذاكرة فقط متغييرين , وقام بعملية الجمع مباشرة اثناء الطباعة

اما ماهو استهلاك الذاكرة ,, فهذا يعود الى المبرمج نفسة . اما لحساب كم يستهلك برنامجك من الذاكرة فلا فكرة لدي ان كان ممكنا ام لا.. ولكن يمكنك ان تصنع دالة تمرر لها حجم كل متغيير من الذاكرة. حسب نوع كل متغيير.

تحياتي

OMANI FOR EVER

-------------------------------------------------

post-12787-12780191801974.jpg

-------------------------------------------------

#13

كل ما قلته معروف جيدآ

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

ولكن المشكلة أنه فى عمليات أخرى كثيرة قد لا يتضح أيهم الأسهل

عرفنا منكم طريقة قياس سرعة التنفيذ ولكن كيف يقاس استهلاك الذاكرة. ؟

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

فأيهم يكون الأفضل؟

ولكم ألف شكر

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