PDA

View Full Version : حرفه ای: for یا foreach یا while



trasilver
یک شنبه 14 مهر 1392, 18:42 عصر
سلام خدمت دوستان .

دوستان خوبم به نظر شما کدوم بهتره ؟ یعنی سرعتش بالاتر هست و مشکل ساز نیست ؟

با تشکر .

مهرداد سیف زاده
یک شنبه 14 مهر 1392, 20:35 عصر
بستگی به کاربرد شما داره
حلقه for بیشتر برای کارهایی که وابستگی بیشتری برای مرحله و گام دارن استفاده میشه(در واقع اطلاعات کاملی ار تعداد دفعات تکرار و گام حرکت دارید)و خوانایی بیشتری در تعیین گام حرکت، تعداد دفعات تکرار و شرط پایان حلقه داره.
حلقه foreach برای کار با آرایه ها بیشتر کاربرد داره
حلقه while بیشتر برای اهداف بلندی که شرط پایان وابسته به مقدارهای دیگری هست. مثلا یک جدول رو از دیتابیس بخونه و تا وقتی به آخرین عنصر جدول نرسیده اون رو خروجی چاپ کنه.

البته این یک تجربه برنامه نویسی بر حسب عادت و عمومی هست. در صورتی هسته اصلی هر سه دستور ایجاد حلقه تکرار هست و شاید بتونید کار مورد نظرتون رو با هر یک از این سه دستور انجام بدید.

MMSHFE
یک شنبه 14 مهر 1392, 20:49 عصر
بستگی به نیازتون داره ولی بطور کلی حلقه foreach کمی کندتر از بقیه است چون در هربار اجرای حلقه، یک عمل انتساب هم انجام میده تا مقدار جاری حلقه رو در متغیر بعد از as ذخیره کنه. البته از اون طرف حلقه های دیگه هم متغیر حلقه رو دارن و عمل افزایش و کاهش اون هم زمان میبره ولی عملیات Increment/Decrement در مجموع سریعه چون روال روتین CPU محسوب میشه. ازطرفی اگه شرط پایان حلقه توی for رو مثلاً اینطوری بنویسید:

$i < count($x)
در هربار اجرای حلقه، تعداد عناصر آرایه دوباره شمارش میشه و سرعتش خیلی کم میشه (نسبت به وقتی که قبل از حلقه تعداد عناصر رو توی یک متغیر بگذارین و متغیر حلقه رو با اون متغیر مقایسه کنید). در کل ریزه کاری زیاد داره اما تفاوت جدی بین این حلقه ها نیست. while هم همونطور که گفتن، برای وقتی بکار میره که تعداد دفعات حلقه از قبل معلوم نیست و فقط شرط پایانش رو میدونیم.

رضا قربانی
دوشنبه 15 مهر 1392, 09:30 صبح
در کل ریزه کاری زیاد داره اما تفاوت جدی بین این حلقه ها نیست
وقتی 5000 نفر بازدید بیاد وسط اون موقع جدی میشه .

من foreach رو ترجیح نمیدم ولی روی while و for موندم ، نمی دونم کدومش بهینه تره و سرعت بیشتری داره .

AliRezaPro
دوشنبه 15 مهر 1392, 10:23 صبح
اینجا رو ببینید :

http://stackoverflow.com/questions/1852242/for-vs-foreach-vs-while-which-is-faster-for-iterating-through-arrays-in-php
http://stackoverflow.com/questions/12847502/for-loop-vs-while-loop-vs-foreach-loop-php
و اینجا :

http://www.phpbench.com/