PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : سرعت اجرای یک کد php را چگونه محاسبه کنیم؟



سیدرضا بازیار
September 25th, 2018, 10:12
سلام

فرض کنید من و دوستم دوتا کد رو نوشتیم که دقیقا یک کار رو انجام میده! اما با دو روش مختلف نوشته شده

حالا چطوری میتونیم محاسبه کنیم که هر کد واسه اجرا چقدر زمان میبره؟ یا کدوم کد بهینه تر و بهتر نوشته شده؟

nevergotme
September 25th, 2018, 10:48
گمونم باید از متود microtime تایم استفاده کنی ، زبانتو قوی کن این چیزارو به انگلیسی باید سرچ کنی

https://stackoverflow.com/questions/4412575/php-get-page-load-stats-how-to-measure-php-script-execution-load-time

lizard.tiny
September 25th, 2018, 11:59
درود

برای محاسبه Load Time یک سایت یا صفحه کافیه کد زیر رو در بالاترین خط اجرای اون صفحه قرار بدید :


$starttime = microtime(true);

و کد زیر رو هم در پایین ترین خط قرار بدید :


$endtime = microtime(true);

در نهایت با کد زیر میتونید زمان Load Time رو در بیارید و برسی کنید :


echo $endtime - $starttime;

سیدرضا بازیار
September 25th, 2018, 13:28
روش های مشابه بالا رو انجام دادم. الان دو روش بالا رو هم دوباره تست کردم

مشکل اینجاست که هر بار سرعت صفحه تغییر میکنه. چون کد ها هر بار مقادیر مختلفی رو بازگردانی میکنند. اینجوری نمیشه محاسبه کرد@-)

الان دو کد در پایین با دو روش نوشته شده:



<table style="width:100%;height:100%;">
<?php for ($i = 0 ; $i <= 20 ; $i++){ ?>
<tr>
<?php for ($j = 0 ; $j <= 20 ; $j++){ ?>
<td style="background-color: rgb(<?php echo rand(0,250).','.rand(0,250).','.rand(0,250) ?>);"></td>
<?php } ?>
</tr>
<?php } ?>
</table>




<?php
echo '<table style="width:100%;height:100%;">';
for ($i = 0; $i <= 20; $i++) {
echo "<tr>";
for ($j = 0; $j <= 20; $j++) {
echo "<td style='background-color: rgb(".rand(0,255).",".rand(0,255).",".rand(0,255).")'> </td>";
}
echo "</tr>";
}
echo "</table>";


هر دو تقریبا شبیه به هم هستند. اما باز هم باید یکی از کد ها با اختلاف بسیار کمی سریعتر باشه 8-|

lizard.tiny
September 25th, 2018, 14:40
روش های مشابه بالا رو انجام دادم. الان دو روش بالا رو هم دوباره تست کردم

مشکل اینجاست که هر بار سرعت صفحه تغییر میکنه. چون کد ها هر بار مقادیر مختلفی رو بازگردانی میکنند. اینجوری نمیشه محاسبه کرد@-)

الان دو کد در پایین با دو روش نوشته شده:



<table style="width:100%;height:100%;">
<?php for ($i = 0 ; $i <= 20 ; $i++){ ?>
<tr>
<?php for ($j = 0 ; $j <= 20 ; $j++){ ?>
<td style="background-color: rgb(<?php echo rand(0,250).','.rand(0,250).','.rand(0,250) ?>);"></td>
<?php } ?>
</tr>
<?php } ?>
</table>




<?php
echo '<table style="width:100%;height:100%;">';
for ($i = 0; $i <= 20; $i++) {
echo "<tr>";
for ($j = 0; $j <= 20; $j++) {
echo "<td style='background-color: rgb(".rand(0,255).",".rand(0,255).",".rand(0,255).")'> </td>";
}
echo "</tr>";
}
echo "</table>";


هر دو تقریبا شبیه به هم هستند. اما باز هم باید یکی از کد ها با اختلاف بسیار کمی سریعتر باشه 8-|
درود

بهتره که زمان رو بر حسب ثانیه بدست بیارید تا اینقدر گمراه کننده نباشه

یک مثال روی نمونه کد خودتون : https://miladworkshop.ir/paste/e7Umum

masih_enter
September 26th, 2018, 18:58
سلام . یک موضوع دیگه هم وجود داره که در این روش نمونه گیری مشکل ایجاد میکنه در برخی موارد .
برای مثال ما حتی دو داده یکسان رو از پایگاه داده با دو روش بخونیم نمیشه قطعی گفت کدوم صد درصد بهتره چون لود سرور پایگاه داده و موارد دیگه همیشه یک عدد ثابت نیست و احتمال داره در اون لحظه که کد دوم داشته اجرا میشده سرور لود بیشتری داشته و به همین دلیل جواب میتونه اشتباه باشه . در کل این روش برای حدودی گرفتن زمان اجرا خوبه ولی باید دونست برای مقایسه دو کد میتونه درست نباشه .