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...

Rekomendasi Untuk Mempersingkat Waktu Eksekusi Katalon Web Test

Latar Belakang Permasalahan Salah satu kriteria test yang baik adalah memiliki coverage yang baik. Tetapi lamanya waktu eksekusi seringkali jadi salah satu alasan untuk men- take out case - case yang ada agar test menjadi layak untuk ditunggu eksekusinya dan layak untuk dieksekusi sesering kebutuhan yang men- trigger -nya. Untuk itu diperlukan langkah-langkah untuk mempersingkat waktu tunggu test semaksimal mungkin tanpa harus mengeluarkan case - case yang telah disiapkan sebelumnya. Designed by Freepik Lingkungan Eksekusi Tes Pada tulisan ini diasumsikan test dieksekusi pada lingkungan CI/CD yang: 1. menggunakan commandline katalonc dari KRE (Katalon Runtime Engine). 2. Tiap job pipeline CI/CD bisa mengeksekusi beberapa test suite yang berbeda secara berurutan Rekomendasi Kesepakatan Sepakati dengan user , batas waktu test maksimum Batas waktu test perlu disepakati agar test bisa diakhiri dengan kesimpulan FAILED, jika melebihi batas waktu yang disepakati Sepakati dengan user , ...

vi / emacs keybinding di abiword

vi / emacs keybinding di abiword vi / emacs keybinding di abiword Author: Indra Ginanjar < indraginanjar@gmail.com > Title: vi / emacs keybinding di abiword Date: 2014-04-12 (Sabtu, 12 April 2014) Pendahuluan abiword telah memiliki fungsi keybinding (fungsi keyboard dan shortcut ) vi dan emacs meskipun belum secara lengkap. Karena belum lengkap dan kekurangan tenaga developer untuk menyempurnakannya, kemampuan keybinding ini tidak ditampilkan untuk user umum dan juga tidak disupport oleh developer -nya. Sehingga untuk menggunakannya user harus mengubah file konfigurasi abiword sendiri. Pada tulisan ini akan dijelaskan langkah-langkah yang diperlukan untuk mengaktifkan fungsi keybinding vi atau emacs pada abiword. Langkah-langkah Jalankan abiword minimal sekali agar ia menghasilkan file konfigurasi ~/.config/abiword/profile Catatan: ~ sama dengan lokasi folder home Edit file ~/.config/abiword/profile di dalam tag <AbiP...