حلقههای for و while پس از کامپایل تفاوتی در زبان ماشین با هم نخواهند داشت. هر دو به پرشهای زبان ماشین تبدیل میشن. بنابراین استفاده از while از نظر کارایی نباید تفاوتی با for داشته باشه.
فرض کنیم از while به صورت زیر استفاده میکنیم.
int i=0;
while(i<100)
{
...
i = f(i);
}
حالا سوال اینه که f(i) بهتره چطوری پیاده بشه. دو حالت اصلی داریم.
الف) کدش مستقیماً در حلقه استفاده بشه یا تابع inline تعریف بشه. که در این صورت اگه کد یکی دو خطه بهتره که در خود حلقه باشه و اگه بیشتره به صورت inline تا خوانایی کد حفظ بشه.
ب) به صورت یک تابع معمولی که inline نیست. در این صورت برای هر بار فراخوانی یک پرش و برگشت انجام میشه که از نظر کارایی بهصرفه نیست.
بنابراین بهتره از یکی از دو شکل حالت (الف) استفاده کنیم.
هیچ پژوهش انسانی نمیتواند ادعای علمی بودن داشته باشد، مگر اینکه از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)