Langsung ke konten utama

Perfomance Benchmark Local Variable VS Function Parameter VS Global Variable di PHP

<?php
/*
  indraginanjar@gmail.com
  17 Januari 2014
*/
function local_var($num){
 $local_num = $num;
 return $local_num + 3;
}

function function_param($num){
 return $num + 3;
}

function global_var($num){
 global $number;
 return $number + 3;
}

$number = 4;
$count = 1000000;
$lengths = array();

$local_start = microtime(true);
for($i = 0; $i < $count; $i++){
 local_var($number);
}
$local_end = microtime(true);
$lengths = array_merge($lengths, array('local_var' => $local_time = $local_end - $local_start));

$function_param_start = microtime(true);
for($i = 0; $i < $count; $i++){
 function_param($number);
}
$function_param_end = microtime(true);
$lengths = array_merge($lengths, array('function_param' => $function_param_end - $function_param_start));

$global_var_start = microtime(true);
for($i = 0; $i < $count; $i++){
 global_var($number);
}
$global_var_end = microtime(true);
$lengths = array_merge($lengths, array('global_var' => $global_var_end - $global_var_start));

echo "# Test:\n\n";
echo "## Using Local Variable\n";
echo '  start:', $local_start, "\n";
echo '  end:', $local_end, "\n\n";
echo '  length:', $lengths['local_var'], "\n\n";

echo "## Using Function Parameter Only\n";
echo '  start:', $function_param_start, "\n";
echo '  end:', $function_param_end, "\n\n";
echo '  length:', $lengths['function_param'], "\n\n";

echo "## Using Global Variable\n";
echo '  start:', $global_var_start, "\n";
echo '  end:', $global_var_end, "\n\n";
echo '  length:', $lengths['global_var'], "\n\n";

asort($lengths);

echo "# Result:\n";
$fastest = current($lengths);
$no = 1;
echo $no, '. ', key($lengths), '(fastest): ', current($lengths), "\n";
while($running_time = next($lengths)){
 echo ++$no, '. ', key($lengths), ': ', $running_time, ' : +', $running_time - $fastest, "\n";
}
?>

Hasil

# Test:

## Using Local Variable
  start:1389998959.5745
  end:1389998960.8139

  length:1.2393939495087

## Using Function Parameter Only
  start:1389998960.8139
  end:1389998961.9497

  length:1.1357579231262

## Using Global Variable
  start:1389998961.9497
  end:1389998963.1976

  length:1.2478859424591

# Result:
1. function_param(fastest): 1.1357579231262
2. local_var: 1.2393939495087 : +0.10363602638245
3. global_var: 1.2478859424591 : +0.11212801933289

Jika di running dengan perintah time, seperti "time php benchmark-allocation.php" akan didapat lamanya benchmark ini berjalan:

real 0m3.655s
user 0m3.356s
sys 0m0.288s

Komentar

Postingan populer dari blog ini

Memasang Android 4.4 KitKat di Samsung Galaxy W (Wonder) GT-I8150

Membuat backup Singkronisasikan handphone (contact, dll) Saya membuat backup SMS dengan SMS To Text, dan riwayat panggilan dengan Call Logs Backup and Restore Download Download Android SDK Tools Windows: http://dl.google.com/android/installer_r22.3-windows.exe Linux: http://dl.google.com/android/android-sdk_r22.3-linux.tgz Android SDK Tools juga terdapat dalam pake Android SDK Windows 32 bit: http://dl.google.com/android/adt/adt-bundle-windows-x86-20131030.zip Linux 32 bit: http://dl.google.com/android/adt/adt-bundle-linux-x86-20131030.zip Download ClockworkMod (CWM) Recovery Versi minimal untuk memasang CM 11 adalah versi 6.0.4.4. Jika menggunakan versi yang dibawah/sebelum itu, akan muncul pesan kesalahan "set_metadata_recursive: some changes failed" pada saat memasang CM nantinya. Download versi versi 6.0.4.5 di http://goo.im/devs/arco/ancora/cwm/recovery-clockwork-6.0.4.5-ancora.zip Download CyanogenMod (CM) 11 http://goo.im/devs/arco/ancor...

Perbandingan hasil findElements() Selenium yang menggunakan (XPath)[index] versus Xpath

Object hasil findElements() dari XPath dengan index lebih konsisten daripada yang didapat dari iterasi hasil findElements() XPath tanpa index. #selenium #web #automation

Memberi Border Putih Pada Foto (HTML + CSS)

Bagaimana cara membuat foto jadi terlihat memiliki border putih di blogger? Yang seperti ini? Cara termudahnya adalah memilih template yang menyediakan fasilitas untuk itu.. Ada cara lain? Ada sih, kalo bersedia mau agak repot... Pada saat mem-posting, di editornya PILIH tampilan HTML lalu untuk membuat foto yang ber-border putih ketik kode yang kira-kira seperti berikut ini <div id="background" style="background-color:gray;text-align:center;padding:10px 10px 10px 10px"> <div id="border" style="display: inline-block;background-color:fff;padding: 8px 8px 8px 8px"> <img src=http://twitpic.com/show/thumb/tq7m5.jpg" /> </div> </div> Penggunaan attribute id pada div di contoh ini tidak berpengaruh apa-apa hanya untuk mempermudah mengikuti penjelasan saja, jadi boleh dihapus. Pertama, jika border-nya nanti berwarna putih maka background/ ruang diluar diluar border itu sebaiknya diberi w...