درود
یکی از مباحثی که موقع برنامه نویسی زیاد بهش توجه نمیشه، Performance است
امان از localhost :چشمک:
در این تاپیک مباحث مرتبط با PHP Performance و بصورت کلی سرعت و بازدهی وب سایت رو آموزش خواهم داد.
Printable View
درود
یکی از مباحثی که موقع برنامه نویسی زیاد بهش توجه نمیشه، Performance است
امان از localhost :چشمک:
در این تاپیک مباحث مرتبط با PHP Performance و بصورت کلی سرعت و بازدهی وب سایت رو آموزش خواهم داد.
درس اول:
مقایسه حلقه For و Foreach در PHP
در برنامه نویسی Collection به هر نوع موجودیتی که حاوی بیش از یک key = value است گفته می شود
مانند Array, List, Enum, ...
همیشه وقتی با Collection ها سر و کار داریم باید از foreach به جای سایر حلقه ها استفاده کنیم، Foreach نوعی از LOOP (حلقه) ها در PHP و سایر زبان های خانواده C است که مخصوص کار با این نوع از داده های است.
به این مثال دقت کنید
صورت مسئله:
می خواهیم سرعت حلقه For و حلقه Foreach را در شرایط یکسان بررسی کنیم
<?php
$elements = array();
////
// An array of 10,000 elements with random string values
////
for($i = 0; $i < 10000; $i++) {
$elements[] = (string)rand(10000000, 99999999);
}
$time_start = microtime(true);
////
// for test
////
for($i = 0; $i < count($elements); $i++) { }
$time_end = microtime(true);
$for_time = $time_end - $time_start;
$time_start = microtime(true);
////
// foreach test
////
foreach($elements as $element) { }
$time_end = microtime(true);
$foreach_time = $time_end - $time_start;
echo "For took: " . number_format($for_time * 1000, 3) . "ms\n";
echo "Foreach took: " . number_format($foreach_time * 1000, 3) . "ms\n";
?>
تشریح کد بالا:
- با استفاده از تابع rand در PHP یک آرایه شامل 10 هزار عضو ایجاد می کنیم
- با استفاده از تابع microtime تایم شروع عملیات را در یک متغیر ذخیره می کنیم
- با استفاده از حلقه For یکبار روی اعضای آرایه می چرخیم
- حالا مچددا با استفاده از میکروتایم زمان پایان رو ذخیره کرده و تفاوت آن با زمان شروع را بدست می آوریم
- همین مراحل را طی کرده و اینبار از حلقه Foreach استفاده می کنیم و تفاوت این دو را روی صفحه خروجی می دهیم
- با اجرای این کد روی لپ تاپ من اعداد زیر بدست آمد
For took: 16.137ms
Foreach took: 0.324ms
نتیجه گیری:
متوجه عمق فاجعه شدید؟
طبق خروجی این مثال
حلقه Foreach بیش از 49 برابر (دقیقا 49.805) سریعتر از حلقه For عمل کرده است
کتاب خوبی نوشتید مهندس...
مثالهای خوبی هم داره
منتظر چاپ دوم هستم با مثالهای بهتر
کتابی که دوستمون اشاره فرمودند:
افزایش سرعت و بازدهی در PHP
ضمیمه 131878
- نویسنده : مهندس محمد کرامتی فر
- نسخه : نگارش اول
- تعداد صفحه : 240
- انتشارات: پندار پارس
- شابک : ٩-٥٠-٦٥٢٩-٦٠٠-٩٧٨
- تعداد دانلود : 0
- تعداد بازدید : 15300
- تاریخ : بهار ١٣٩٣
دانلود: فهرست و بخشی از این کتاب
در ضمن برای علاقه مندان به این مبحث، بنده کلاسی رو هم در آموزشگاه برنامه نویس برگزار می کنم با عنوان:
البته یه پارتی بازی هم داریم :چشمک:
اعضای سایت برنامه نویس به ارسال نام کاربری به ایمیل academy@barnamenevis.email
- با 25% تخفیف معادل مبلغ 100.000 تومان ثبت نام می شوند
- علاوه بر اون یک نسخه از این کتاب هم قبل از شروع دوره بصورت هدیه و رایگان از طریق پست براتون ارسال میشه