آقا حامد خواهش میکنم
فروم یه جاییه برای تبادل نظر .
منتظر بودم تا دیگران هم در این کار منو کمک کنن.امید وارم دوستان دیگه هم به ما ملحق بشن
Printable View
آقا حامد خواهش میکنم
فروم یه جاییه برای تبادل نظر .
منتظر بودم تا دیگران هم در این کار منو کمک کنن.امید وارم دوستان دیگه هم به ما ملحق بشن
من نفهمیدم ()undoBar چیکار میکنه ؟؟؟؟؟....فهمیدم به جای else به کار رفته ولی نفهمیدم همیشه میشه ازش استفاده کرد ؟؟؟؟کد:
bar();
if (condition)
{
undoBar();
foo();
}
سلام
مینا خانوم این مساله رو بهتره با یه مثال بگم
فرض کنین شما میخواین یه عدد به عنوان ماه از سال بگیرین.این عدد نباید بزرگتر از 12 باشه.دو صورت میتونین این کنترل رو داشته باشین
وکد:if(i<12)
mah=1;
else
mah=i%13;
با توجه به اینکه در روش دوم پدیده محل بهتر حفظ میشه کد سرعت بیشتری دارهکد:mah=i;
if(i>12)
mah=i%13;
استفاده از روش عملگر و مقدار دهی
البته سمش یادم رفته دقیفا چیه
بهتره از روش زیر
به جایکد:x += value;
استفاده کنیم.چونکه در این روش یک شی موقتی ساخته نمیشهکد:x = x + value;
قرار دادن توابع کوچک به صورت inline ش
این مطلب توی کتابها توضیح داده شده.
استفاده از اشیای بینام
تا جای ممکن از توابع بینام استفاده کنید.مثلا
سرعت بیشتری ازکد:foo(TMyClass("abc"));
دارهکد:TMyClass x("abc");
foo(x);
در روش دوم اشیا و پارامتر های ارسالی از share memory استفاده میکنند
این هم مقاله بهینه سازی ورودی و خروجی که گفته بودم:
کد:http://www.fileden.com/files/2008/7/4/1988726/IO%20Optimization.pdf
سلامنقل قول:
من اول رو حرفتون شک داشتم برا همین یه برنامه نوشتم که هر دفعه 10^7 با کار های بالا رو انجام میداد و وقتی 100 بار هر برنامه رو اجرا کردن و وقتی میانگین ها رو با هم مقایسه کردم زمان کد دوم بیشتر بود؟
میانگین کد اول = 0.26247 ثانیه برای 10^7 بار
میانگین کد دوم = 0.2818 ثانیه برای 10^7 بار
آقا حامد طبیعتا باید این طوری باشه.
اینجا کل کد ما 100بایت هم نمیشه. کدی با این اندازه تو خود ثبات cpu هم جا میشه. همون طور که گفتم یه مثال برای متوجه شدن چگونگی کارکرد این مساله هستش.
ثانیا اگه کد ما بیشتر هم باشه به خاطر اینکه شما توی حلقه تست میکنین بازم روش اول یعنی با استفاده از شرط و نقض شرط سرعت بیشتری داره. سیستم عامل استالینگز (ص 375)
همون طور که گفتم این کد مربوط میشه به مبحث محل و پراکندگی در سیستم عامل که توی سیستم های امروزی توی کدهای حجیم کارساز هستش.
مراجعه شود : مدیریت حافظه قطعه بندی ؛ کتاب دکتر فهیمی
به نوشته آقای استالینگز هم باید کمترین انشعاب رو از کد داشته باشیم (ص321) که البته توی کد اولی هم که من نوشته بودم هم رعایت نشده. البته این بهینه سازی رو من از یک مقاله آز آقای اندرو وینتر خوندم.خود ایشون هم ذکر کرده بودن که نسبت به شرایط با تصمیم گیری درست پرش رو در کد کم کنین.
اما بازم سعی میکنم مثال و کد بهتری که کارایی این روش رو نشون بده براتون بذارم.
در ضمن از مقاله خیلی خوبتون در مورد توابع ورودی و خروجی ممنونم. توصیه میکنم بقیه هم حتما مطالعه کنن.
یه چیزی هم تا یادم نرفته:بیشتر این بهینه سازی هارو و و روشهای خیلی بهتر و بیشتر رو کامپایلر های امروزی مثل
vc200X,borland c boulder 2005,7,...
خودشون انجام میدن برای همین قصد دارم تااز این به بعد روشهای بهینه کردن کد در سیستم های توکار و بیدرنگ رو عرض کنم.البته بیشتر اینها از مقالات هستش