3v4l.org

run code in 300+ PHP versions simultaneously
<?php /** * PDO4You is a class that implements the Singleton design pattern for connecting the database using the PDO extension (PHP Data Objects) * * @author Giovanni Ramos <giovannilauro@gmail.com> * @copyright 2010-2013, Giovanni Ramos * @since 2010-09-07 * @license http://opensource.org/licenses/MIT * @link http://github.com/giovanniramos/PDO4YOU * @package PDO4YOU * @category PDO * @version 3.1 * * */ class PDO4You extends PDO4You_pagination { /** * Stores the name of the server machine on which the database resides * * @access private static * @var string * * */ private static $datahost; /** * Stores the name of the port on which the server is running * * @access private static * @var string * * */ private static $dataport; /** * Stores the name of the current instance of the connection * * @access private static * @var string * * */ private static $connection; /** * Stores an object instance PDO connection * * @access private static * @var object * * */ private static $instance; /** * Stores object instances PDO connection * * @access private static * @var array * * */ private static $handle = array(); /** * Stores the definition of persistent connection * * @access private static * @var boolean * * */ private static $persistent = false; /** * Stores the ID of the last inserted row or sequence value * * @access private * @var string * * */ private static $lastId; /** * Stores the total of affected rows in last CRUD operation * * @access private * @var string * * */ private static $rowCount; /** * Stores messages Exception thrown * * @access private * @var array * * */ private static $exception = array( 'code-1044' => 'Access denied for user: \'%1$s\'', 'code-1045' => 'Failed communication with the database using: \'%1$s\'@\'%2$s\'', 'code-2002' => 'No connection could be made because the destination machine actively refused. This host is not known.', 'code-2005' => 'No communication with the host provided. Check your settings.', 'unrecognized' => 'The Adapter/DSN Instance was not recognized.', 'no-database' => 'Database unknown. Check your settings.', 'no-instance' => 'No instance of object PDO4You available. Unable to access the methods.', 'no-argument-sql' => 'The SQL argument is missing.', 'no-instruction-json' => 'The SQL statement is missing in JSON format.', 'not-implemented' => 'Method not implemented.', 'critical-error' => 'Critical error detected in the system.', 'json-error-depth' => 'Maximum stack depth exceeded.', 'json-error-state-mismatch' => 'Mismatch or arithmetic operation modes impossible to be represented.', 'json-error-ctrl-char' => 'Attribute control unexpected was found.', 'json-error-syntax' => 'The query is poorly formatted JSON provided.' ); /** * The constructor is set to private, preventing direct instance of the class * * @access private * * */ private function PDO4You() { } /** * Method Singleton connection * * @access private static * @param string $alias Pseudonym of a connection instance * @param string $driver Driver DSN connection * @param string $user Username of the database * @param string $pass Password of the database * @param string $option Configuration the connection driver * @return void * @throws PDOException Throws an exception in case of connection failures * * */ private static function singleton($alias, $driver, $user, $pass, $option) { try { try { $instance = @ new PDO($driver, $user, $pass, $option); $instance->setAttribute(PDO::ATTR_ERRMODE, ($_SERVER['SERVER_ADDR'] == '127.0.0.1' || $_SERVER['SERVER_ADDR'] == '::1') ? PDO::ERRMODE_EXCEPTION : PDO::ERRMODE_SILENT); self::setHandle($alias, $instance); self::setInstance($alias); } catch (PDOException $e) { $error = self::getErrorInfo($e); if ($e->getMessage() == 'could not find driver' || $e->getMessage() == 'invalid data source name') { throw new PDOException(self::$exception['unrecognized']); } elseif ($error['code'] == '2005') { throw new PDOException(self::$exception['code-2005']); } elseif ($error['code'] == '2002') { throw new PDOException(self::$exception['code-2002']); } elseif ($error['code'] == '1044') { throw new PDOException(sprintf(self::$exception['code-1044'], $user)); } elseif ($error['code'] == '1045') { throw new PDOException(sprintf(self::$exception['code-1045'], $user, $pass)); } else { throw $e; } } } catch (PDOException $e) { self::stackTrace($e); } } /** * Method for setting a connection instance * * @access public static * @param string $alias Pseudonym of a connection instance * @return void * * */ public static function setInstance($alias) { self::$instance = self::getHandle($alias == null ? 'standard' : $alias); } /** * Method to get a single instance of the database per connection * * @access public static * @param string $alias Pseudonym that will be used as a pointer to an instance of established connection * @param string $type Connection type if using "Initial Setup" or "Full DSN" * @param string $user Username of the database * @param string $pass Password of the database * @param string $option Configuration the connection driver * @return object * @throws Exception Throws an exception in case of connection failures * * */ public static function getInstance($alias = 'standard', $type = null, $user = null, $pass = null, Array $option = null) { try { try { if (!array_key_exists($alias, self::$handle)) { if ($alias == 'standard') { $dir = dirname(__FILE__); $file = $dir . '/PDO4You.settings.ini'; if (file_exists($file)) { if (is_readable($file)) { $datafile = parse_ini_file_advanced($file); if (isset($datafile['adapter'])) { if (PDO4YOU_ADAPTER == 'vcap') { $json = json_decode(getenv("VCAP_SERVICES"), true); $data = $datafile['adapter']['vcap']; $part = preg_split('~[|]~', $data['vcap']); $conf = $json[$part[0]][$part[1]]['credentials']; $type = isset($data['type']) ? $data['type'] : null; $host = isset($conf['hostname']) ? $conf['hostname'] : null; $port = isset($conf['port']) ? $conf['port'] : null; $user = isset($conf['username']) ? $conf['username'] : null; $pass = isset($conf['password']) ? $conf['password'] : null; $base = isset($conf['name']) ? $conf['name'] : null; } else { $part = preg_split('~[.]~', preg_replace('~[\s]{1,}~', null, PDO4YOU_ADAPTER)); $conf = count($part) == 2 ? @$datafile['adapter'][$part[0]][$part[1]] : @$datafile['adapter'][$part[0]]; $type = isset($conf['type']) ? $conf['type'] : null; $host = isset($conf['host']) ? $conf['host'] : null; $port = isset($conf['port']) ? $conf['port'] : null; $user = isset($conf['user']) ? $conf['user'] : null; $pass = isset($conf['pass']) ? $conf['pass'] : null; $base = isset($conf['base']) ? $conf['base'] : null; } } else { exit('The settings for existing databases, were not configured in the <strong>PDO4You.settings.ini</strong>.'); } } else { exit('The <strong>PDO4You.settings.ini</strong> file cannot be read.'); } } else { exit('The <strong>PDO4You.settings.ini</strong> file could not be found in directory:<br /> ' . $dir); } } $type = strtolower($type); switch ($type) { case 'maria': $driver = 'mysql:' . (!(empty($base)) ? 'dbname=' . $base . ';' : null) . 'host=' . $host . ';port=' . $port . ';'; break; case 'mysql': case 'pgsql': case 'cubrid': $driver = $type . ':' . (!(empty($base)) ? 'dbname=' . $base . ';' : null) . 'host=' . $host . ';port=' . $port . ';'; break; case 'mssql': case 'dblib': case 'sybase': $driver = $type . ':' . (!(empty($base)) ? 'dbname=' . $base . ';' : null) . 'host=' . $host . ';'; break; case 'sqlsrv': $driver = 'sqlsrv:' . (!(empty($base)) ? 'database=' . $base . ';' : null) . 'server=' . $host . ';'; break; case 'oracle': $driver = 'oci:' . (!(empty($base)) ? 'dbname=' . $base : null); break; case 'sqlite': $driver = 'sqlite:' . (!(empty($base)) ? $base : null); break; default: $driver = $type; } $option = !is_null($option) ? $option : array(PDO::ATTR_PERSISTENT => self::$persistent, PDO::ATTR_CASE => PDO::CASE_LOWER); self::singleton($alias, $driver, $user, $pass, $option); } } catch (PDOException $e) { $error = self::getErrorInfo($e); if ($error['state'] == '42000') { throw new PDOException(self::$exception['no-database']); } else { throw $e; } } } catch (PDOException $e) { self::stackTrace($e); } return self::$instance; } /** * Method for assigning a new object instance PDO connection * * @param string $alias Pseudonym to identify the connection instance * @param PDO $instance Object PDO connection * @return void * */ private static function setHandle($alias, PDO $instance) { self::$handle[$alias] = $instance; } /** * Method to return an object PDO connection * * @param string $alias Pseudonym of a connection instance * @return object * */ private static function getHandle($alias) { self::setConnection($alias); return self::$handle[$alias]; } /** * Method to set the server name * * @access private static * @param string $host Server name * @return void * * */ private static function setDatahost($host) { self::$datahost = $host; } /** * Method to retrieve the server name * * @access public static * @param void * @return string * * */ public static function getDatahost() { return self::$datahost; } /** * Method to set the port number of the server * * @access private static * @param string $port Port number * @return void * * */ private static function setDataport($port) { self::$dataport = $port; } /** * Method to retrieve the port number of the server * * @access public static * @param void * @return string * * */ public static function getDataport() { return self::$dataport; } /** * Method to define which the current instance of connection * * @access private static * @param string $alias Pseudonym of a connection instance * @return void * * */ private static function setConnection($alias) { self::$connection = $alias; } /** * Method to retrieve the name of the current instance of connection * * @access public static * @param void * @return string * * */ public static function getConnection() { return self::$connection; } /** * Method for defining the type of communication with the database * The default connection is not persistent * * @access public static * @param boolean $persistent Sets a persistent connection * @return void * * */ public static function setPersistent($persistent = false) { self::$persistent = $persistent; } /** * Method to capture the error information of an Exception * * @access public static * @param Exception $e Gets the message from the exception thrown * @param boolean $debug Enables the display of the captured values * @return array * * */ public static function getErrorInfo(Exception $e, $debug = false) { if (defined(PDO4YOU_WEBMASTER)) { self::fireAlert(self::$exception['critical-error'], $e); } $info = null; $errorInfo = null; $message = $e->getMessage(); preg_match('~SQLSTATE[[]([[:alnum:]]{1,})[]]:?\s[[]?([[:digit:]]{1,})?[]]?\s?(.+)~', $message, $errorInfo); $info['state'] = isset($errorInfo[1]) ? $errorInfo[1] : null; $info['code'] = isset($errorInfo[2]) ? $errorInfo[2] : null; $info['message'] = isset($errorInfo[3]) ? $errorInfo[3] : null; if ($debug) { echo '<pre>', print_r($info), '</pre>'; } return $info; } /** * Method to retrieve the name of the current driver * * @access public static * @param void * @return string * * */ public static function getDriver() { return self::$instance->getAttribute(PDO::ATTR_DRIVER_NAME); } /** * Method to display details about the target server's database connected * * @access public static * @param void * @return void * * */ public static function getServerInfo() { try { if (self::$instance instanceof PDO) { self::setStyle(); $driver = self::getDriver(); $info = ($driver == 'sqlite' || $driver == 'mssql') ? 'not available' : self::$instance->getAttribute(PDO::ATTR_SERVER_INFO); echo '<h7>Server Information - ', is_array($info) ? implode(', ', $info) : $info, '</h7>'; } else { throw new PDOException(self::$exception['no-instance']); } } catch (PDOException $e) { self::stackTrace($e); } } /** * Method to display the PDO drivers installed and supported by the server * * @access public static * @param void * @return void * * */ public static function getAvailableDrivers() { try { if (self::$instance instanceof PDO) { self::setStyle(); $info = self::$instance->getAvailableDrivers(); echo '<h7>Available Drivers: ', implode(', ', $info), '</h7>'; } else { throw new PDOException(self::$exception['no-instance']); } } catch (PDOException $e) { self::stackTrace($e); } } /** * PDO4You Style * * @access public static * @param void * @return void * * */ public static function setStyle() { $style = '<style type="text/css">'; $style.= 'body,.code { background:#FAFAFA; font:normal 12px/1.7em Bitstream Vera Sans Mono,Courier New,Monospace; margin:0; padding:0; }'; $style.= '#pdo4you h2 { display:block; color:#000; background:#FFF; font-size:20px; margin:0; padding:10px; border-bottom:solid 1px #999; }'; $style.= '#pdo4you h7 { display:block; color:#FFF; background:#000; font-size:12px; margin:0; padding:2px 5px; }'; $style.= '.pdo4you { margin:8px; padding:0; }'; $style.= '.code { font:inherit; background:#EFEFEF; border:solid 1px #DDD; border-right-color:#BBB; border-bottom:none; margin:10px 10px 0 10px; overflow:auto; }'; $style.= '.trace,.debug { background:#FFF; border:solid 1px #BBB; border-left-color:#DDD; border-top:none; margin:0 10px 15px 10px; }'; $style.= '.trace div { clear:both; }'; $style.= '.debug { padding:5px; }'; $style.= '.title { padding-left:6px; font-weight:bold; }'; $style.= '.title span { font-weight:normal; }'; $style.= '.number { color:#AAA; background:#EFEFEF; min-width:40px; padding:0 5px; margin-right:5px; float:left; text-align:right; cursor:default; }'; $style.= '.highlight { background:#FFC; }'; $style.= '</style>'; print $style; } }

Here you find the average performance (time & memory) of each version. A grayed out version indicates it didn't complete successfully (based on exit-code).

VersionSystem time (s)User time (s)Memory (MiB)
8.3.60.0150.00016.61
8.3.50.0050.01022.08
8.3.40.0120.00918.66
8.3.30.0160.00619.25
8.3.20.0000.00820.51
8.3.10.0080.00023.61
8.3.00.0030.00520.87
8.2.180.0070.00718.66
8.2.170.0090.01222.96
8.2.160.0130.01020.34
8.2.150.0050.00324.18
8.2.140.0000.00824.66
8.2.130.0130.00726.16
8.2.120.0030.00622.20
8.2.110.0030.00622.23
8.2.100.0090.00317.84
8.2.90.0030.00519.30
8.2.80.0040.00418.05
8.2.70.0070.00317.88
8.2.60.0040.00418.05
8.2.50.0030.00518.07
8.2.40.0000.00918.28
8.2.30.0050.00318.11
8.2.20.0000.00817.95
8.2.10.0040.00417.91
8.2.00.0040.00417.83
8.1.280.0040.01825.92
8.1.270.0000.00823.83
8.1.260.0040.00726.35
8.1.250.0030.00728.09
8.1.240.0060.00323.79
8.1.230.0060.00619.21
8.1.220.0030.00517.91
8.1.210.0040.00418.77
8.1.200.0000.01017.60
8.1.190.0030.00517.55
8.1.180.0030.00618.10
8.1.170.0110.00018.78
8.1.160.0000.00822.19
8.1.150.0000.00818.70
8.1.140.0050.00317.48
8.1.130.0000.00817.89
8.1.120.0080.00017.61
8.1.110.0050.00317.59
8.1.100.0000.00717.46
8.1.90.0050.00317.58
8.1.80.0000.00717.52
8.1.70.0030.00317.52
8.1.60.0030.00617.70
8.1.50.0040.00417.57
8.1.40.0030.00517.60
8.1.30.0040.00417.61
8.1.20.0000.00817.75
8.1.10.0030.00517.69
8.1.00.0060.00317.63
8.0.300.0000.00818.77
8.0.290.0000.00717.29
8.0.280.0040.00418.55
8.0.270.0050.00217.09
8.0.260.0070.00016.93
8.0.250.0050.00317.16
8.0.240.0040.00417.13
8.0.230.0060.00317.05
8.0.220.0030.00317.14
8.0.210.0070.00017.16
8.0.200.0040.00417.06
8.0.190.0060.00317.24
8.0.180.0050.00216.98
8.0.170.0000.00817.15
8.0.160.0040.00417.00
8.0.150.0030.00617.12
8.0.140.0000.00817.13
8.0.130.0060.00013.56
8.0.120.0010.00715.31
8.0.110.0020.00615.36
8.0.100.0000.00815.31
8.0.90.0010.00715.33
8.0.80.0060.00515.36
8.0.70.0060.00215.31
8.0.60.0070.00115.29
8.0.50.0050.00315.29
8.0.30.0120.00416.03
8.0.20.0100.00516.08
8.0.10.0060.00215.27
8.0.00.0100.00915.86
7.4.330.0050.00015.00
7.4.320.0000.00716.65
7.4.300.0030.00316.62
7.4.290.0000.00816.62
7.4.280.0050.00316.52
7.4.270.0000.00716.75
7.4.260.0080.00016.66
7.4.250.0040.00415.03
7.4.240.0030.00515.56
7.4.230.0000.00815.01
7.4.220.0060.00714.97
7.4.210.0060.00815.79
7.4.200.0050.00314.90
7.4.190.0060.00215.05
7.4.180.0000.00813.45
7.4.160.0030.00915.06
7.4.150.0080.00515.39
7.4.140.0060.00916.36
7.4.130.0070.00715.52
7.4.120.0130.00615.48
7.4.110.0100.00515.00
7.4.100.0070.01014.93
7.4.90.0060.00915.01
7.4.80.0110.00516.32
7.4.70.0030.01214.99
7.4.60.0070.00614.95
7.4.50.0060.00315.00
7.4.40.0080.00218.00
7.4.30.0050.01015.05
7.4.20.0030.00613.28
7.4.10.0080.00013.40
7.4.00.0090.00514.20
7.3.330.0030.00313.31
7.3.320.0050.00013.30
7.3.310.0040.00414.86
7.3.300.0060.00114.80
7.3.290.0050.00914.96
7.3.280.0080.00815.65
7.3.270.0070.00615.34
7.3.260.0080.00814.90
7.3.250.0090.00515.40
7.3.240.0090.00315.07
7.3.230.0050.00714.89
7.3.220.0040.00413.38
7.3.210.0090.00414.93
7.3.200.0040.00916.45
7.3.190.0080.00715.08
7.3.180.0050.00714.99
7.3.170.0080.00414.98
7.3.160.0050.00715.00
7.3.150.0070.00013.49
7.3.140.0000.00613.23
7.3.130.0060.00013.21
7.3.120.0050.00614.20
7.3.110.0030.00513.97
7.3.100.0060.00514.01
7.3.90.0020.00714.39
7.3.80.0050.00714.11
7.3.70.0060.00514.25
7.3.60.0050.00514.23
7.3.50.0030.00514.33
7.3.40.0060.00514.29
7.3.30.0030.00614.09
7.3.20.0040.00615.86
7.3.10.0030.00515.76
7.3.00.0030.00515.85
7.2.340.0120.00013.46
7.2.330.0100.00514.93
7.2.320.0100.00714.98
7.2.310.0100.00614.99
7.2.300.0020.01314.86
7.2.290.0090.00614.94
7.2.280.0130.00013.17
7.2.270.0120.00013.32
7.2.260.0060.00713.44
7.2.250.0120.00013.18
7.2.240.0010.01214.09
7.2.230.0040.01014.11
7.2.220.0050.01013.98
7.2.210.0010.01414.16
7.2.200.0100.00314.33
7.2.190.0050.00714.26
7.2.180.0070.00714.36
7.2.170.0050.01014.28
7.2.160.0050.00914.32
7.2.150.0120.00215.92
7.2.140.0080.00615.83
7.2.130.0070.00915.86
7.2.120.0110.00415.81
7.2.110.0100.00216.04
7.2.100.0080.00616.12
7.2.90.0040.00816.06
7.2.80.0050.00915.87
7.2.70.0070.00815.94
7.2.60.0080.00516.06
7.2.50.0080.00616.07
7.2.40.0070.00716.01
7.2.30.0080.00415.96
7.2.20.0120.00216.02
7.2.10.0080.00515.88
7.2.00.0090.00417.05
7.1.330.0080.00314.70
7.1.320.0080.00714.79
7.1.310.0090.00514.66
7.1.300.0090.00314.86
7.1.290.0050.00714.77
7.1.280.0090.00514.90
7.1.270.0080.00614.89
7.1.260.0090.00314.93
7.1.250.0080.00414.77
7.1.240.0110.00013.98
7.1.230.0000.01214.23
7.1.220.0090.00214.07
7.1.210.0120.00014.04
7.1.200.0080.00314.82
7.1.190.0080.00413.97
7.1.180.0130.00014.23
7.1.170.0060.00614.13
7.1.160.0000.01314.14
7.1.150.0120.00014.16
7.1.140.0000.01214.01
7.1.130.0060.00613.98
7.1.120.0130.00014.02
7.1.110.0120.00014.05
7.1.100.0010.01015.92
7.1.90.0120.00014.07
7.1.80.0090.00414.13
7.1.70.0090.00215.39
7.1.60.0090.01116.61
7.1.50.0100.00715.49
7.1.40.0080.00414.13
7.1.30.0040.00913.94
7.1.20.0090.00313.99
7.1.10.0120.00014.06
7.1.00.0050.04118.10
7.0.330.0080.00414.01
7.0.320.0060.00613.92
7.0.310.0000.01213.86
7.0.300.0090.00414.05
7.0.290.0080.00413.84
7.0.280.0060.00513.87
7.0.270.0090.00313.88
7.0.260.0110.00013.93
7.0.250.0060.00614.15
7.0.240.0090.00314.06
7.0.230.0120.00014.13
7.0.220.0060.00614.07
7.0.210.0120.00014.00
7.0.200.0060.00615.32
7.0.190.0080.00413.91
7.0.180.0000.01214.13
7.0.170.0080.00414.13
7.0.160.0060.00614.00
7.0.150.0040.00814.05
7.0.140.0060.03917.97
7.0.130.0050.00714.07
7.0.120.0060.00614.17
7.0.110.0040.00813.97
7.0.100.0240.04216.99
7.0.90.0250.02817.10
7.0.80.0110.03817.08
7.0.70.0100.04117.10
7.0.60.0130.03317.00
7.0.50.0060.03417.13
7.0.40.0090.04316.97
7.0.30.0040.03517.06
7.0.20.0100.04317.02
7.0.10.0110.04117.00
7.0.00.0080.04417.06
5.6.400.0080.00312.51
5.6.390.0060.00612.60
5.6.380.0040.00812.67
5.6.370.0110.00212.61
5.6.360.0110.00012.47
5.6.350.0070.00412.44
5.6.340.0080.00312.73
5.6.330.0110.00012.67
5.6.320.0090.00212.68
5.6.310.0100.00212.60
5.6.300.0120.00012.35
5.6.290.0090.00312.49
5.6.280.0110.03516.88
5.6.270.0000.01112.52
5.6.260.0070.00412.65
5.6.250.0090.03916.61
5.6.240.0090.03116.64
5.6.230.0070.04616.61
5.6.220.0080.04116.78
5.6.210.0060.03216.68
5.6.200.0120.04117.03
5.6.190.0130.03716.93
5.6.180.0060.03016.88
5.6.170.0090.03916.85
5.6.160.0120.03516.89
5.6.150.0070.03916.90
5.6.140.0080.02516.94
5.6.130.0050.04316.90
5.6.120.0090.04216.98
5.6.110.0090.03816.80
5.6.100.0080.04016.91
5.6.90.0030.03116.94
5.6.80.0070.04516.63
5.6.70.0130.03516.53
5.6.60.0040.03316.67
5.6.50.0110.03316.45
5.6.40.0080.02316.61
5.6.30.0050.02216.61
5.6.20.0070.02416.58
5.6.10.0060.02516.52
5.6.00.0040.02716.54
5.5.380.0090.04016.59
5.5.370.0090.02516.61
5.5.360.0040.02516.46
5.5.350.0100.03516.59
5.5.340.0060.04516.72
5.5.330.0080.04216.79
5.5.320.0080.04216.67
5.5.310.0070.04116.67
5.5.300.0100.05416.72
5.5.290.0060.04516.66
5.5.280.0070.04416.75
5.5.270.0030.04616.62
5.5.260.0050.04616.66
5.5.250.0060.04516.59
5.5.240.0070.04116.48
5.5.230.0040.04316.48
5.5.220.0040.02316.39
5.5.210.0080.03316.46
5.5.200.0070.02016.43
5.5.190.0050.02216.39
5.5.180.0070.02216.17
5.5.170.0110.00012.36
5.5.160.0080.02416.22
5.5.150.0020.02416.37
5.5.140.0030.04016.30
5.5.130.0090.03116.17
5.5.120.0040.02516.29
5.5.110.0060.02116.28
5.5.100.0070.02216.35
5.5.90.0060.02016.32
5.5.80.0070.02016.30
5.5.70.0040.02516.28
5.5.60.0090.01816.33
5.5.50.0050.02216.38
5.5.40.0080.02016.24
5.5.30.0040.02416.45
5.5.20.0070.02016.37
5.5.10.0070.02016.18
5.5.00.0040.03116.23
5.4.450.0030.04515.98
5.4.440.0090.04215.96
5.4.430.0080.03915.84
5.4.420.0080.04215.94
5.4.410.0090.03715.95
5.4.400.0060.04115.77
5.4.390.0070.02315.63
5.4.380.0060.02115.75
5.4.370.0080.02015.70
5.4.360.0070.02115.69
5.4.350.0050.02115.83
5.4.340.0060.02015.65
5.4.330.0080.00312.59
5.4.320.0100.01915.80
5.4.310.0060.02215.85
5.4.300.0060.02215.88
5.4.290.0070.02915.84
5.4.280.0080.02015.74
5.4.270.0060.02015.63
5.4.260.0080.04115.82
5.4.250.0040.02715.79
5.4.240.0060.02015.60
5.4.230.0060.02015.54
5.4.220.0070.01815.62
5.4.210.0040.02015.66
5.4.200.0060.03115.63
5.4.190.0060.02015.62
5.4.180.0060.02015.65
5.4.170.0000.02615.79
5.4.160.0040.03215.71
5.4.150.0030.02515.62
5.4.140.0070.04414.38
5.4.130.0060.02014.43
5.4.120.0060.01814.38
5.4.110.0040.02114.57
5.4.100.0050.01914.40
5.4.90.0030.02114.33
5.4.80.0030.02414.42
5.4.70.0060.02014.54
5.4.60.0070.03214.44
5.4.50.0080.03314.36
5.4.40.0070.03214.41
5.4.30.0110.01514.42
5.4.20.0090.03514.51
5.4.10.0070.03714.36
5.4.00.0110.02314.21
5.3.290.0020.03613.91
5.3.280.0050.03313.77
5.3.270.0070.02013.95
5.3.260.0060.02113.72
5.3.250.0050.01913.85
5.3.240.0060.02613.88
5.3.230.0070.02813.77
5.3.220.0000.02613.67
5.3.210.0060.02113.67
5.3.200.0050.02113.76
5.3.190.0050.03013.72
5.3.180.0040.02213.89
5.3.170.0040.02213.80
5.3.160.0040.02613.94
5.3.150.0090.01513.75
5.3.140.0050.02113.73
5.3.130.0100.03713.88
5.3.120.0070.03813.87
5.3.110.0040.04413.87
5.3.100.0070.04113.63
5.3.90.0060.03613.62
5.3.80.0100.02213.59
5.3.70.0100.03513.46
5.3.60.0070.02013.60
5.3.50.0040.04113.46
5.3.40.0110.03313.47
5.3.30.0060.03913.55
5.3.20.0080.03613.33
5.3.10.0050.04013.28
5.3.00.0090.04013.27

preferences:
74.48 ms | 401 KiB | 5 Q