$itterations = 500; $results = array(); // array('ext', 'keylen', 'textsize', '(en/de)code', 'ops/sec') $aesMcrypt = new phpaes\AES_CBC_Mcrypt(new phpaes\PKCS7()); $aesOpenssl = new phpaes\AES_CBC_OpenSSL(); foreach (array('mcrypt' => $aesMcrypt, 'openssl' => $aesOpenssl) as $methodName => $method) { /** @var phpaes\AES $method */ foreach ($texts as $textDesc => $secretText) { foreach ($keys as $keyLen => $key) { $method->setKey($key); $method->setIv('1234567890123456'); // non-real iv, but ok for demo $s = microtime(true); for ($i = $itterations; $i > 0; $i--) { $method->encrypt($secretText); } $e = microtime(true); $results[] = array('ext' => $methodName, 'keylen' => $keyLen, 'textsize' => $textDesc, '(en/de)code' => 'enc', 'ops/sec' => number_format($itterations / ($e - $s), 5, '.', '')); $etext = $method->encrypt($secretText); $s = microtime(true); for ($i = $itterations; $i > 0; $i--) { $method->decrypt($etext); } $e = microtime(true); $results[] = array('ext' => $methodName, 'keylen' => $keyLen, 'textsize' => $textDesc, '(en/de)code' => 'dec', 'ops/sec' => number_format($itterations / ($e - $s), 5, '.', '')); } } } $util = new phpaes\Util(); echo "Results:\n" . $util->renderTable($results) . "\n";