-
کدنویسی بهینه
با سلام
یه مشکل عمده توی برنامه ها بهینه بودن کد هستش که بعضی وقتها حتی با کوتاه بودن کد هم اشتباه میشه
بعضی از این مباحث توی ساختمان داده مطرح میشه که بیشتر به مربوط به الگوریتم میشه اما خود کد هم روشهایی برای بهینه سازیشون هست که کم کم خدمدتون عرض میکنم
البته این روشها مربوط به c++ هستش و پاره ای از اونها عمومی حساب میشن
-
1
بهینه سازی c++
این هینه سازی ها روشهایی آسان برای استفاده در کدهای موجود و آتی برای افزایش سرعت برنامه میباشد.
بهرحال این مطلب را به خاطر داشته باشید که سریعترن کد, کدی است که فراخوانی نمیشود.
استفاده از لیست مقداردهی *
همیشه برای مقدار دهی سازنده ها از لیست مقدار دهی استفاده کنید. برای مثال
[HTML]
TMyClass::TMyClass(const TData &data) : m_Data(data)
{
}
[/HTML]
به جای
[HTML]
TMyClass::TMyClass(const TData &data)
{
m_Data = data;
}
[/HTML]
بدون لیست مقدار دهی متغیرهای سازنده پیش فرض پشت پرده فراخوانی شده سپس عملگر مقدار دهی فراخوانی میشود. با لیست مقدار دهی فقط سازنده کپی فراخوانی میشود.
بهینه سازی حلقه ها *
هر جایی که امکان دارد از حلقه پایین شمار استفاده کنید
[HTML]
for (i = n-1; i >= 0; --i)
[/HTML]
به جای
[HTML]
for (i = 0; i < n; ++i)
[/HTML]
در هر حلقه شرط صفر بودن حلقه سریعتر است
همچنین
i++
از کد
++i
در قسمت سوم حلقه سریعتر است
استفاده از int
همیشه از نوع اینت به جای کاراکتر یا وع شورت استفاده کنید.این نوع یک نوع داده بومی برای ماشین است
-
بسیار بسیار ممنون بحث بسیار جالبی هست حتما ادامه بده ما شدیدا مشتاقیم
-
بله (نظر قبلی)
لطفا کد هارو در سمت چپ و در داخل تگ Code قرار بدین.
من یک دونشونم نتونستم بخونم. :(
-
سلام
آقا حامد چشم
ویرایش شد
-
همیشه توابع محلی را به صورت استاتیک تعریف کنید
به منظور جلوگیری از دیده شدن توابه در خارج از فایل کد شما.البته بعضی کامپایلر ها توانایی این بهینه سازی را به طور خودکار دارا میباشند
بهینه سازی عبارت شرطی *
به عقب برگشتن در عوض پرش
کد:
bar();
if (condition)
{
undoBar();
foo();
}
در عوض
کد:
if (condition)
{
foo();
}
else
{
bar();
}
استفاده از عملگر شرطی مناسب برای به عقب برگرداندن یک مطلب در عوض پرش از ناحیه کد به ناحیه دیگر
البته این نوع شرط در بعضی مواقی کاربرد دارد . برای فهم بهتر رجوع کنید به مباحث محل در مباحث سیستم عامل.
در ضمن برای داشتن کد با بهترین سرعت از روشهای شی گرایی محض باید اجتناب شود.
برای مطالعه بیشتر (کتاب سیستم عامل . ویلیام استالینگز)
-
بهینه سازی ساختار سویچ
ساختار های case که عمومیتر هستند و بیشتر احتمال رخ دادن آنها وجود دارد در ابتدا قرار دهید
از عملگرهای پرهزینه دوری کنید
عملگر جمع از عملگر ضرب کم هزینه تر و عملگر ضرب از تقسیم کم هزینه تر است .تا جای ممکن از عملگر های پرهزینه دوری کنید.
مقدار دهی هنگام تعریف متغییر
تا جای ممکن در هنگام تعریف متغییر مفدار دهی را انجام دهید
در عوض
کد:
TMyClass x;
x = data;
تعریف سپس مقدار دهی تابع سازنده پیش فرض را فراخوانی میکند و سپس اپراتور مقدار گزاری را.مقدار دهی هنگام تعریف از کپی سازنده استفاده میکند
ارسال آرگومان توسط ارجاع
کد:
void foo(TMyClass &x)
عوض
-
دستتون درد نکنه
یه سوال داشتم
چرا بهتره که توابع محلی رو static تعریف کنیم؟
-
سلام
یک تابع عضو استاتیک با یک کلاس مرتبط است نه با یک شی . یک عضو استاتیک را میتوانید در هر جایی برای عاملیت یا برای داده استفاده کنید بدون نیاز یه کپی شدن در تمام آبجکت ها.
یک فایده دیگر اینکه میتوانیم با عضو های استاتیک تعداد اشیا را شمارش کنیم
یکی رو هم که همون بالا (حوزه دید) گفته بودم
-
سلام
اگه میشه و دخالت در کارتون نمیشه درباره بهینه سازی ورودی و خروجی منم یه پست بدم؟