PDA

View Full Version : نکات مفید برای سریع شدن برنامه های نوشته شده با دلفی



Valadi
دوشنبه 21 آبان 1386, 08:20 صبح
-سعی کنید کدها را ساده بنویسید.این کار باعث سادگی در خواندن کدها و فهمیدن آنها می شود. از نام های با معنا برای متغییر ها و ثابت ها استفاده کنید.برای مثال: sName,sMessage برای متغییر های String iCounter برای متغییر های Integer. برای ثابت ها از حروف بزرگ استفاده کنید.sWARNING برای ثابتهای String . برای کامپوننت ها (Visual Component Librarry) از اسمهای پیش فرض استفاده نکنید. مثل : Edit1,Combo1,Button1. برای کامژوننت ها به اینگونه عمل کنید مثلا برای دکمه ای button برای جستجو داریم این نام را انتخاب می کنیم: BtnSearch

. 2- گذاشتن رهنمود ‍‌‍‍{+O$} یا {Optimization On$} در ابتدای برنامه. با گذاشتن این رهنمود کامپایلر دلفی موثرتر عمل می کند. البته بعضی اوقات Debugging (اشکال زدایی) سخت تر انجام می شود(با فعال بودن این قسمت): ... شما نمیتوانید یک نقطه BreakPoint روی دستورات بگذارید

3-ممکن است شما بخواهید کامپایل کنید برنامه خود را با پکیچ Run-Time Package. این کار میتواند بگیرد فضای زیادی وقتی که شما استفاده می کنید در برنامه از libraries یکسان. متاسفانه وقتی برنامه خود را ارائه می دهید شما نیاز به ارائه DLL های استفاده در برنامه نیز می باشید.

4-هیچ وقت همه فرم ها را در شروع برنامه نسازید(create) .(این امر به صورت پیش فرض انجام می گیرد). برای اینکه این کار باعث کند شدن لود برنامه می شود و احتیاج به حافظه زیاد می شود. به جای این کار به صورت دینامیک فرم ها را خلق کنید. نکته: برای اینکه فرم ها به صورت خود کار درست نشوند به منو Project رفته گزینه Option را انتخاب کرده وسپس در همان تب اول فرم هایی را که نمی خواهید به صورت خود کار درست شوند را به راست منتقل کنید.

5- به جای اینکه خودتون به نوشتن توابع سیستمی کنیداستفاده کنید از توابع API .(در مواقعی که تابع های یکسان وجود دارد). معمولا این توابع سریعتر عمل می کنند.

6- وقتی که برنامه شما دارای عکس می باشد ابتدا سعی کنید عکس خود را بهینه کنید .
وقتی استفاده می کنید از فایلهای bmp مطمئن شوید که آن عکس در انداره مورد نظر می باشد و نیازی به قیچی خوردن نیست.
وقتی که استفاده می کنید از فایلهای GIF آنها را با بهبود بخشیدن به Color Palete با ابزار های خاص(در محیط های گرافیکی) بهینه سازید.
وقتی استفاده می کنید از فایلهای JPEG بهتر است از Image Compresion استفاده کنید.
بهتر است عکس های JPEG خود را که دارای 256 رنگ یا کمتر از 256 رنگ هستند به GIF تبدیل کنید.

7- وقتی می خواهید تنها از یک یا دو تابع یا پروسیجر از یک یونیت استفاده کنید .
تنها همان توابعی که می خواهید را در برنامه خود کپی کنید و آن یونیت را به یوزز Usesخود اضافه نکنید.

8-به جای اینکه از کدها در برنامه خود استفده بهتر است از کامپوننت های غیر بصری استفاده کنید.
برای اینکه به کد مورد نظر براحتی می توانید دسترسی پیدا کنید(در کامپوننت های).

-اگر در برنامه خود از توابع time-critical(حلقه های که در برنامه شما مهم به نظر می رسد) استفاده می کنید باید خیلی دقت کنید.
چیزی که سریع به نظر می رسد در کامپیوتر شما ممکن است در کامپیوترهای دیگر به همان سرعت نباشد. اینجا شما باید از کد های کوچک و قابل اجرا و همچنین سریع است استفاده کنید
پیشنهاد می شود از کد های اسمبلر(اسمبلی ) استفاده کنید.

10-تقریبا همه برنامه ها در محاسبات ابتدایی به یک گونه میباشند .
ساده کردن فرمولها یتان برای سریع تر کردن توابع می باشد که یکی از معمولی ترین راه ها برای بهینه کردن برنامه هاست.

nasr
دوشنبه 21 آبان 1386, 08:34 صبح
گذاشتن رهنمود ‍‌‍‍{+O$} یا {Optimization On$} در ابتدای برنامه
میشه لطف کنید کاربرد این دو را بفرمایید و اینکه اول برنامه منظورتون کجاست؟

ممنون

Cave_Man
دوشنبه 21 آبان 1386, 10:10 صبح
منبع مقاله (توضیحات کامل تر)
http://delphi.about.com/od/objectpascalide/a/speedsize.htm

Cave_Man
دوشنبه 21 آبان 1386, 10:11 صبح
میشه لطف کنید کاربرد این دو را بفرمایید و اینکه اول برنامه منظورتون کجاست؟

ممنون


Type Switch
Syntax {$O+} or {$O-}
{$OPTIMIZATION ON} or {$OPTIMIZATION OFF}
Default {$O+}
{$OPTIMIZATION ON}
Scope Local
The $O directive controls code optimization. In the {$O+} state, the compiler performs a number of code optimizations, such as placing variables in CPU registers, eliminating common subexpressions, and generating induction variables. In the {$O-} state, all such optimizations are disabled.
Other than for certain debugging situations, you should never have a need to turn optimizations off. All optimizations performed by the Delphi compiler are guaranteed not to alter the meaning of a program. In other words, the compiler performs no "unsafe" optimizations that require special awareness by the programmer.

Note: The $O directive can only turn optimization on or off for an entire procedure or function. You can’t turn optimization on or off for a single line or group of lines within a routine.
لازم نیست کدی رو به برنامه اضافه کنی برای Optimization تنها کافیه از منوی Project گزینه Options رو انتخاب و در تب Compiler گزینه Optimization رو چک کنی . که البته بصورت پیش فرض انتاب شده است

vcldeveloper
دوشنبه 21 آبان 1386, 23:34 عصر
-ممکن است شما بخواهید کامپایل کنید برنامه خود را با پکیچ Run-Time Package. این کار میتواند بگیرد فضای زیادی وقتی که شما استفاده می کنید در برنامه از libraries یکسان. متاسفانه وقتی برنامه خود را ارائه می دهید شما نیاز به ارائه DLL های استفاده در برنامه نیز می باشید.
استفاده از Run-time Packages تاثیری در سرعت برنامه نداره.


- وقتی می خواهید تنها از یک یا دو تابع یا پروسیجر از یک یونیت استفاده کنید .
تنها همان توابعی که می خواهید را در برنامه خود کپی کنید و آن یونیت را به یوزز Usesخود اضافه نکنید.

کامپایلر دلفی فقط بخش هایی از یونیت را که در برنامه استفاده کردید به برنامه لینک میکنه، نه کل یونیتی که در uses آمده باشه. از طرفی Copy\Paste کردن کد به این شکل باعث کاهش reusability کد میشه.

dkhatibi
سه شنبه 22 آبان 1386, 06:09 صبح
در مورد نکته ی 5 در صورت امکان توضیح بیشتری دهید و نحوه ی انجام آن را بگویید.

Cave_Man
سه شنبه 22 آبان 1386, 10:13 صبح
برای انجام کاراهای سیستمی مثلا کپی کردن فایل بهتره که با استفاده از توابع API این کار ور انجام بدید نه اینکه خودتون براش تابع یا متد بنویسید.چون توابع API توابع معتبر و با کارایی بالا هستند.