Skip to content

Instantly share code, notes, and snippets.

@bwg
bwg / arraykeytest.php
Last active August 29, 2015 14:13
array_key_exists vs. isset
<?php
$iterations = 100000;
$value = [
'one' => 1,
'two' => 2,
'three' => 3,
];
@bwg
bwg / ctortest.php
Last active August 29, 2015 14:11
comparing subclasses that call parent constructors vs. cloning empty object
<?php
$iterations = 100000;
class zero {
public static function one() {
static $empties = [];
$empty = &$empties[static::class];
@bwg
bwg / noticetest
Last active August 29, 2015 14:03
is checking an array_key faster than disabling E_NOTICE
PHP Version 5.4.30
-------------------------------------------------------
Testing 10 item array over 100,000 iterations:
isset 18.280982971191
array_key_exists 96.060037612915
^E_NOTICE 71.103811264038
-------------------------------------------------------
Testing 100 item array over 100,000 iterations:
@bwg
bwg / hashtest
Created July 10, 2014 04:58
md5 vs. sha1 vs. crc32
PHP Version 5.4.30
--------------------------------------------------
Testing 0 char string over 100,000 iterations:
md5 113.2709980011 ms
sha1 117.16985702515 ms
crc32 78.847885131836 ms
--------------------------------------------------
Testing 1 char string over 100,000 iterations:
@bwg
bwg / passbyreferencetest
Last active August 29, 2015 14:03
testing pass by reference vs. pass by value
PHP Version 5.4.29
--------------------------------------------------
Testing large_array over 100,000 iterations:
pass_by_ref 95.081090927124 ms
pass_by_val 86.126089096069 ms
--------------------------------------------------
Testing small_array over 100,000 iterations:
@bwg
bwg / serializetest
Last active December 1, 2020 00:03
testing serialize vs. json_encode vs. var_export vs. msgpack_pack
PHP Version 5.4.30
--------------------------------------------------
Testing 10 item array over 1,000 iterations:
serialize 2.1979808807373 ms
json_encode 1.3420581817627 ms
var_export 1.9409656524658 ms
msgpack_pack 1.5850067138672 ms
--------------------------------------------------
@bwg
bwg / arraydifftest
Last active August 29, 2015 14:03
array_diff_key() vs. loop/unset
PHP Version 5.4.30
-------------------------------------------------------
Testing 10 item array over 1,000 iterations:
array_diff_key 1.2109279632568
loop/unset 0.87404251098633
-------------------------------------------------------
Testing 100 item array over 1,000 iterations:
@bwg
bwg / arraycasttest
Last active August 29, 2015 14:02
is_array($value) vs (array) $value === $value (PHP 5.4.28)
Lee@maverick ~$ php --version
PHP 5.4.28 (cli) (built: May 8 2014 10:11:53)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies
with Xdebug v2.2.5, Copyright (c) 2002-2014, by Derick Rethans
Lee@maverick ~$ php arraycasttest.php
--------------------------------------------------
Testing null over 100,000 iterations:
is_array($value) 81.238031387329 ms
@bwg
bwg / nulltest
Last active August 29, 2015 13:57
php null showdown
PHP Version 5.6.11
--------------------------------------------------
Testing null over 100,000 iterations:
control 16.100883483887
!$value 22.799968719482
isset($value) 21.697998046875
null !== $value 22.647142410278
!empty($value) 22.5830078125
@bwg
bwg / wtf.php
Last active August 29, 2015 13:57
fun with php
<?php
abstract class Base {
protected $name = 'Base';
}
class Foo extends Base {
// defining $name here will properly fatal on access violation
// protected $name = 'Foo';