السلام ورحمة الله وبركاتة ...
لدي سؤال ... عام نوعاً ما
ما هي الطرق التي يتخدذه المبرمجين عادتاً لجعل برامجه لا تتجمد او تكون ثقيلة او ....إلخ ؟
اعرف ان جواب هذا السؤال ... يعتمد على البرنامج الذي يتم برمجته ...
لكن قصدي مثلاً ... عندما اعمل برنامج كبير جداً .. كالفوتوشوب والـ 3D MAX و السكايب و الـ Word Microsodt وغيرها
فغالباً ... المبرمج المتوسط او المتبتدئ عندما يبرمج بعض برامجه يجدها ثقيلة واحياناً ... تحصل عملية تجمد ...
وما إلى ذلك ...
اعيد السؤال :
ما هي الطرق التي يتخدذه المبرمجين عادتاً لجعل برامجه لا تتجمد او تكون ثقيلة او ....إلخ ؟
في أحد المرات رئيت احد المبرمجين يستعم هذا السطر في برنامجه :
PHP كود :
Application.ProcessMessages;
بعد ان سئلته عن وضيفه الامر , اخبرني انه يمنع او يقلل من ثقل البرنامج ولا يتجمد ..!!
حيث اني بالحقيقة لم اكن اعلم بوجود مثل هذا النوع من الاوامر ... وفي نفس الوقت كنت في بعض الاحياان
اواجه مشكلة ثقل البرنامج ...إلخ
لذلك طرحت السؤال
وشكراً لحسن القراءة
إقتباس :عند استعمالك لل processmessages فأنت تجبر الكونترول على التحول للقيادة اليدوية
.. (لن يتم انتظار وصول الرسائل الى الكونترول حتى يتم الانتقال الى الدورة n+1 )
لكن استاذنا الفاضل ، الدالة وان لم تكن دالة تسريع بحتة فهي في معني تنقيص الانتظار، وهذا نوع من التسريع الجزئي
أم تصوري لكلامكم خاطيء فالرجاء التصحيح؟
ولكن خالص الشكر
السلام عليكم
ما شاء الله ... بجعبتك الكثير لنتعلمه منك P: اخي المبرمج SMP3
إقتباس : في الحقيقة الموضوع طويل جدا ... و هناك نوع (اختصاص ) من المبرمجون خاص به 'optimization engineer'
طيب لو اردت ان اتعلم اسااسيات هذا الاختصااص , بما اني مبرمج على الاقل ساكون على داريه باسباب بطئ برامجي ...
ماذا يجب ان اعرف ؟
وهل يوجد كتب او مقالات تتحدث بهذا الاختصااص ؟
إقتباس : * أحد الشروط المهمة و التي تحدد نجاح البرنامج من فشله .. هي المراجعة الأخيرة للتطبيق , أغلب المبرمجين يتجاهلون هذه النقطة .. مما ينتج عنه تطبيق مليئ بال Bug !!
صدقت @@" ... احياانا اتجاهل هذه النقطة
شكراً لك على توضيح وضيفه الدالة ProcessMessages ...
فعلاً ... كان المبرمج الذي سئلته يعمل على برنامج يوجد به جزء يستخدم الـ "Controls Graphics"
سؤال آخير هل يوجد اوامر تعمل بنفس عمل الـ ProcessMessages , اوش من هذا النوع من الاوامر ؟
وجزاك الله خير وكتبه ما تقدمه في موازين حسناتك , وزادك علماً فوق علمك اضعاف مضاعفه .
وعذراً على الإثقال , وشكراً لحسن القراءة
عبد الهادي كتب :لكن استاذنا الفاضل ، الدالة وان لم تكن دالة تسريع بحتة فهي في معني تنقيص الانتظار، وهذا نوع من التسريع الجزئي
أم تصوري لكلامكم خاطيء فالرجاء التصحيح؟
ولكن خالص الشكر
إقتباس :عند استعمالك لل ProcessMessages فأنت تجبر الكونترول على التحول للقيادة اليدوية
.. (لن يتم انتظار وصول الرسائل الى الكونترول حتى يتم الانتقال الى الدورة n+1 )
[COLOR="Red"]ماذا يعني هذا ؟
يعني أن الزمن الفاصل بين كل MSG يرسله الوينداوز و ال MSG التالي يساوي بالتقريب صفر (على حسب Loop )
ألق نظرة على ProcessMessage من الوحدة Forms.pas [/COLOR]
PHP كود :
function TApplication.ProcessMessage(var Msg: TMsg): Boolean;
var
Handled: Boolean;
begin
Result := False;
if PeekMessage(Msg, 0, 0, 0, PM_REMOVE) then
begin
Result := True;
if Msg.Message <> WM_QUIT then
begin
Handled := False;
if Assigned(FOnMessage) then FOnMessage(Msg, Handled);
if not IsHintMsg(Msg) and not Handled and not IsMDIMsg(Msg) and
not IsKeyMsg(Msg) and not IsDlgMsg(Msg) then
begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
end
else
FTerminate := True;
end;
end;
لاحظ أن كل التعامل مع الرسائل TMsg

السلام عليكم
تسريع البرنامج يبدأ من مرحلة التفكير/التصميم...اختيار الخواريزميات وما شابه
ثم عند تقدم البرمجة او اقتراب الانتهاء تاتي مرحلة الProfilling بتحليل البرنامج ومعرفة الاجزاء التي تاخذ وقت وتغييرها او تعديلها باخرى اسرع
أنني فهمت الامر الان فجزاك الله خيرا استاذنا الكريم ، وانا ممتن لك كثيرا