منو
 صفحه های تصادفی
ضلع
درس هندسه ترسیمی
هیالیت
کتابهای آمار
تیره شوشریاسه
: امام صادق علیه‌السلام و گروهی از متصوفه
قاتلان ائمه - نام قاتلان
گیاهپزشکی
خارپوستان
دین در بابل
 کاربر Online
623 کاربر online

بهینه سازی

تازه کردن چاپ
علوم ریاضی > علو م رایانه
(cached)


این مطلب از بخش آموزش وب‌سایت المپیاد کامپیوتر رشد،انتخاب شده که با فرمت pdf نیز در وب‌سایت المپیاد رشدموجود می‌باشد. برای مشاهده این موضوعات در وب‌سایت المپیاد، به آدرس فهرست مطالب کامپیوتر مراجعه کنید. همچنین می‌توانید با کلیک اینجا‌ ، با ویژگی‌های بخش آموزش این وب‌سایت آشنا شوید.


بهینه سازی


مباحث بهینه سازی مباحث پیچیده ای بوده و ختم کلام در این مباحث اصولاً ممکن نیست. در این تعادل تنها چند نکته که از لحاظ دستور زبانی به کمک بهبود سرعت اجرای برنامه می آید بیان می کنیم. مابقی بهینه سازی شامل تحلیلهای مرتبه زمان اجرا به بخش طراحی الگوریتم واگذار می شود.
اولین اصل حذر از هر گونه عبارت شرطی است. به این معنا که حتی المقدور از شرط ها استفاده نکنید مثلاً در مورد محاسبه ماکزیمم و مینیمم دو عدد. فرض کنید که تابع قدر مطلق به روشی پیاده سازی شده:
برای اینکه ایده ای از پیاده سازی قدر مطلق بدون استفاده از عبارات شرطی داشته باشید، روش زیر را در مورد اعداد صحیح و نمایش " مکمل دو" برای اعداد منفی در نظر بگیرید.
sb:=n and $ 80000000
;sb:=sb shr 31
hn:=sb*$ FFFFFFFF
;n:=(n-sb)* or hn
فرض کنید که همه اعداد 32 بیتی صحیح هستند. کل عملیات بالا باعث می شود محتویاتدر انتهای کار قدر مطلقدر ابتدای کار باشند.
یک نکته در این گونه صرفه جوئیها در پیچیدگی نتیجه شده از این روش است نکته دوم این است که ممکن است چیزی که جای شرط جایگزین می کنید آنقدر طولانی شود که خود شرط سریعتر اجرا شود.
به هر حال در مورد بالا می توان بدون بکار بردن شرط را محاسبه کرد.
نکته دوم عبارات منطقی است. نتیجه عبارت منطقی اگر ناصحیح باشد کلا ناصحیح است مستقل از اینکه چه باشد. در محاسبه مقادیر منطقی از این نکته استفاده کرده و اگر اولین عنصر در صفر و یا اولین عنصر یک باشد باقی عبارت بررسی نمی شود یعنی در محاسبه
اگرغلط باشد دیگر بقیه عبارت را محاسبه نمی کند. بنابراین در هنگام نوشتن اینگونه شرط ها دقت کنید ساده ترین بخش محاسبه در ابتدای عملقرار گیرد. یک مثال خوب عبارت گفته شده است محاسبه درستی یا غلطی بسیار ساده تر از عبارت سمت راست است لذا در سمت چپ نوشته شده.
در نهایت استفاده از متغیرهای تابعی در جای خود بسیار مفید است. مثلاً در نظر بگیرید که یک تابع دو متغیره دارید:
img/daneshnameh_up/7/72/mco0133a.gif
که بصورت بالا تعریف می شود. حال اگر تابع فوق در زیر برنامه ای بصورت زیر بکار رفته باشد.
می توان زیر برنامه بالا را بصورت زیر نوشت
( البته با فرض آنکه باشند. )
در حالت اول به ازای هر بار اجرا شدنیکبار شرط اجرا می شد یعنی 250 بار اجرا شدن یک شرط در حالیکه در حالت دوم یکبار شرط اجرا شده و از نتیجه در کل ادامه برنامه استفاده می شود. این کار با کم کردن تعداد اجراهای شرطی بصورت سرعت برنامه را بالا می برد.


پیوند های خارجی

http://Olympiad.roshd.ir/computer/content/pdf/0241.pdf




تعداد بازدید ها: 34426


ارسال توضیح جدید
الزامی
big grin confused جالب cry eek evil فریاد اخم خبر lol عصبانی mr green خنثی سوال razz redface rolleyes غمگین smile surprised twisted چشمک arrow



از پیوند [http://www.foo.com] یا [http://www.foo.com|شرح] برای پیوندها.
برچسب های HTML در داخل توضیحات مجاز نیستند و تمام نوشته ها ی بین علامت های > و < حذف خواهند شد..