استفاده نابجا از توابع رشته ای در حلقه های تکرار

5 11 2008

پروسه ی محاسبه طول رشته یک عمل بسیار سنگینیه، حالا شما فرض کنید که در هر بار اجرای حلقه، باید این تابع کلی محاسبات برروی رشته ی ورودی انجام بده تا به null terminated برسه تا برای یک بار تونسته باشه مقدار طول رشته رو برگردونه .شما حالا فرض کنید که رشته ی شما 1000 تا کاراکتر داشته باشه، تابع محاسبه ی طول رشته 1001 بار و حلقه ی شما 1000بار اجرا خواهد شد. آیا این عاقلانه است که یک تکه کد اینقدر بار زمانی و محاسباتی برای سیستم تحمیل کنه ؟!!!

کد پایین یک استفاده نادرست از تابع strlen هستش :

for ( int ix = 0; ix < strlen(a_str); ix++)
{
a_str[ix] = tolower( (unsigned char) a_str[ix] );
}

توابع زیر بهترین شرایط استفاده از این تابع در حلقه ی تکرار می تونه باشه :

for ( int ix = 0; a_str[ix] != ''; ix++)
{
a_str[ix] = tolower( (unsigned char) a_str[ix] );
}
یا

int len = strlen(a_str);
for ( int ix = 0; ix < len; ix++)
{
a_str[ix] = tolower( (unsigned char) a_str[ix] );
}
Advertisements

کارها

Information

پاسخی بگذارید

در پایین مشخصات خود را پر کنید یا برای ورود روی شمایل‌ها کلیک نمایید:

نشان‌وارهٔ وردپرس.کام

شما در حال بیان دیدگاه با حساب کاربری WordPress.com خود هستید. بیرون رفتن / تغییر دادن )

تصویر توییتر

شما در حال بیان دیدگاه با حساب کاربری Twitter خود هستید. بیرون رفتن / تغییر دادن )

عکس فیسبوک

شما در حال بیان دیدگاه با حساب کاربری Facebook خود هستید. بیرون رفتن / تغییر دادن )

عکس گوگل+

شما در حال بیان دیدگاه با حساب کاربری Google+ خود هستید. بیرون رفتن / تغییر دادن )

درحال اتصال به %s




%d وب‌نوشت‌نویس این را دوست دارند: