3v4l.org

run code in 300+ PHP versions simultaneously
<?php /** * DbTable based preference persistence adapter * * @package ManipleCore_Prefs * @uses Zefram_Db_Table * @uses Zend_Serializer * @author xemlock * @version 2014-07-30 */ class ManipleCore_Prefs_Adapter_DbTable implements ManipleCore_Prefs_AdapterInterface { /** * @var ManipleCore_Prefs_Adapter_DbTable_UserPrefs */ protected $_table; /** * @var Zend_Serializer_Adapter_Interface */ protected $_serializer; /** * Constructor. * * @param Zefram_Db_Table_FactoryInterface $factory * @param Zend_Serializer_Adapter_Interface|string $serializer * @return void */ public function __construct(Zefram_Db_Table_FactoryInterface $factory, $serializer = null) { $this->_table = $factory->getTable('ManipleCore_Prefs_Adapter_DbTable_UserPrefs'); if ($serializer !== null) { if (!$serializer instanceof Zend_Serializer_Adapter_Interface) { $serializer = Zend_Serializer::factory($serializer); } $this->_serializer = $serializer; } } /** * Load user preference from database. * * @param int|string $userId * @param string $name * @return mixed */ public function loadUserPref($userId, $name) { $name = (string) $name; $row = $this->_table->fetchRow(array( 'user_id = ?' => $userId, 'pref_name = ?' => $name, )); if ($row) { return $this->_unserialize($row->pref_value); } return null; } /** * Load user preferences matching given prefix or, if none given, * all user preferences. * * @param int|string $userId * @param string $prefix OPTIONAL * @return array */ public function loadUserPrefs($userId, $prefix = null) { $where = array('user_id = ?' => $userId); if ($prefix !== null) { $prefix = str_replace(array('%', '_', '^', '[', ']'), '', $prefix); $where['pref_name LIKE ?'] = $prefix . '%'; } $prefs = array(); foreach ($this->_table->fetchAll($where) as $row) { $prefs[$row->pref_name] = $this->_unserialize($row->pref_value); } return $prefs; } /** * Save single user preference. * * @param int|string $userId * @param string $name * @param mixed $value * @return ManipleCore_Prefs_Adapter_DbTable */ public function saveUserPref($userId, $name, $value) { $name = (string) $name; $this->_table->delete(array( 'user_id = ?' => $userId, 'pref_name = ?' => $name, )); $this->_table->insert(array( 'user_id' => $userId, 'pref_name' => $name, 'pref_value' => $this->_serialize($value), )); return $this; } /** * Save multiple user preferences. * * @param int|string $userId * @param array $prefs * @return ManipleCore_Prefs_Adapter_DbTable */ public function saveUserPrefs($userId, array $prefs) { $this->_table->delete(array( 'user_id = ?' => $userId, 'pref_name IN (?)' => array_map('strval', array_keys($prefs)), )); foreach ($prefs as $name => $value) { $name = (string) $name; $this->_table->insert(array( 'user_id' => $userId, 'pref_name' => $name, 'pref_value' => $this->_serialize($value), )); } return $this; } /** * @param mixed $value * @return mixed */ protected function _unserialize($value) { if ($this->_serializer) { try { $value = $this->_serializer->unserialize($value); } catch (Exception $e) { $value = null; } } return $value; } /** * @param mixed $value * @return string */ protected function _serialize($value) { if ($this->_serializer) { $value = $this->_serializer->serialize($value); } elseif (is_bool($value)) { $value = (int) $value; } elseif (is_float($value)) { // do not cast to float, as during conversion from float to string // E notation is used for big numbers $value = sprintf('%F', $value); } return (string) $value; } }

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.0180.00416.75
8.3.50.0160.01221.91
8.3.40.0040.01118.82
8.3.30.0000.01419.14
8.3.20.0040.00420.31
8.3.10.0030.00523.61
8.3.00.0030.00517.68
8.2.180.0110.00716.63
8.2.170.0110.00422.96
8.2.160.0070.01020.27
8.2.150.0060.00324.18
8.2.140.0060.00324.66
8.2.130.0050.00326.16
8.2.120.0030.00520.95
8.2.110.0030.00720.94
8.2.100.0060.00618.22
8.2.90.0050.00319.26
8.2.80.0050.00317.97
8.2.70.0040.00417.50
8.2.60.0000.00818.04
8.2.50.0060.00318.07
8.2.40.0000.00818.22
8.2.30.0030.00718.36
8.2.20.0020.00517.88
8.2.10.0080.00017.97
8.2.00.0040.00419.48
8.1.280.0000.01425.92
8.1.270.0060.00323.92
8.1.260.0070.00026.35
8.1.250.0040.00428.09
8.1.240.0180.00421.36
8.1.230.0070.00419.54
8.1.220.0080.00017.74
8.1.210.0070.00318.77
8.1.200.0030.00617.35
8.1.190.0080.00017.25
8.1.180.0030.00518.10
8.1.170.0060.00318.62
8.1.160.0000.00821.97
8.1.150.0050.00218.73
8.1.140.0000.00817.42
8.1.130.0040.00417.76
8.1.120.0070.00017.45
8.1.110.0080.00017.29
8.1.100.0030.00517.47
8.1.90.0040.00417.27
8.1.80.0000.00717.46
8.1.70.0070.00017.32
8.1.60.0040.00417.61
8.1.50.0040.00417.41
8.1.40.0050.00217.55
8.1.30.0030.00617.63
8.1.20.0040.00417.54
8.1.10.0040.00417.59
8.1.00.0030.00517.52
8.0.300.0040.00418.77
8.0.290.0040.00416.75
8.0.280.0050.00218.50
8.0.270.0030.00317.35
8.0.260.0000.00717.18
8.0.250.0000.00717.09
8.0.240.0000.00817.11
8.0.230.0070.00016.93
8.0.220.0070.00017.00
8.0.210.0060.00317.01
8.0.200.0030.00316.95
8.0.190.0040.00416.98
8.0.180.0040.00416.90
8.0.170.0040.00417.06
8.0.160.0000.00817.02
8.0.150.0050.00316.83
8.0.140.0040.00416.88
8.0.130.0050.00013.39
8.0.120.0000.00816.98
8.0.110.0030.00516.93
8.0.100.0040.00416.83
8.0.90.0040.00416.94
8.0.80.0140.00716.97
8.0.70.0050.00317.06
8.0.60.0040.00416.90
8.0.50.0040.00416.94
8.0.30.0110.01017.09
8.0.20.0130.01017.40
8.0.10.0070.00017.09
8.0.00.0090.01116.91
7.4.330.0000.00515.09
7.4.320.0000.00616.58
7.4.300.0070.00016.43
7.4.290.0100.00016.41
7.4.280.0030.00316.57
7.4.270.0000.00716.57
7.4.260.0000.00716.54
7.4.250.0000.00816.57
7.4.240.0020.00616.50
7.4.230.0070.00016.69
7.4.220.0160.01016.52
7.4.210.0090.00916.50
7.4.200.0030.00616.61
7.4.160.0040.01216.61
7.4.150.0060.01217.40
7.4.140.0130.00717.86
7.4.130.0130.00716.71
7.4.120.0090.00816.56
7.4.110.0120.01116.45
7.4.100.0070.01016.48
7.4.90.0150.00916.68
7.4.80.0120.00919.39
7.4.70.0070.01416.51
7.4.60.0100.00716.54
7.4.50.0030.00316.56
7.4.40.0100.00616.55
7.4.30.0080.00816.45
7.4.00.0030.01214.85
7.3.330.0000.00513.09
7.3.320.0050.00013.14
7.3.310.0000.00716.09
7.3.300.0000.00716.19
7.3.290.0120.00916.20
7.3.280.0060.01116.27
7.3.270.0090.00917.40
7.3.260.0120.00616.37
7.3.250.0090.00816.45
7.3.240.0000.01716.47
7.3.230.0120.00616.39
7.3.210.0100.01316.36
7.3.200.0100.01019.39
7.3.190.0030.01316.36
7.3.180.0080.00816.57
7.3.170.0070.01016.41
7.3.160.0120.00316.45
7.3.120.0050.01214.96
7.3.110.0100.00315.01
7.3.100.0040.01414.88
7.3.90.0060.00914.84
7.3.80.0040.00815.04
7.3.70.0070.00714.80
7.3.60.0030.00714.89
7.3.50.0100.00714.79
7.3.40.0040.00714.85
7.3.30.0040.01514.72
7.3.20.0140.00316.53
7.3.10.0070.00716.64
7.3.00.0090.00916.60
7.2.330.0190.00616.64
7.2.320.0030.01516.65
7.2.310.0100.00716.54
7.2.300.0060.01116.64
7.2.290.0070.01016.62
7.2.250.0030.01214.86
7.2.240.0100.00315.04
7.2.230.0060.01214.81
7.2.220.0070.00714.92
7.2.210.0030.01014.93
7.2.200.0060.00915.06
7.2.190.0040.01414.79
7.2.180.0080.00815.12
7.2.170.0110.01015.06
7.2.160.0110.00414.77
7.2.150.0100.00716.66
7.2.140.0070.01016.95
7.2.130.0030.01216.84
7.2.120.0030.01016.73
7.2.110.0000.00916.57
7.2.100.0060.01116.47
7.2.90.0000.01316.93
7.2.80.0070.00716.87
7.2.70.0030.01616.54
7.2.60.0050.00616.80
7.2.50.0070.00416.94
7.2.40.0060.00616.69
7.2.30.0060.00616.80
7.2.20.0000.00916.77
7.2.10.0030.01016.93
7.2.00.0050.00818.00
7.1.330.0060.01115.69
7.1.320.0040.00715.74
7.1.310.0090.00315.77
7.1.300.0080.00015.33
7.1.290.0070.01315.55
7.1.280.0040.01415.65
7.1.270.0070.00315.56
7.1.260.0120.00615.73
7.1.250.0030.00915.84
7.1.240.0030.01015.70
7.1.230.0060.00615.48
7.1.220.0060.00915.72
7.1.210.0030.00715.50
7.1.200.0070.00815.55
7.1.190.0090.00915.62
7.1.180.0030.00715.60
7.1.170.0030.00915.50
7.1.160.0040.00915.75
7.1.150.0030.01015.61
7.1.140.0000.01315.40
7.1.130.0100.00715.63
7.1.120.0060.00915.70
7.1.110.0040.01115.64
7.1.100.0060.00516.76
7.1.90.0030.00615.72
7.1.80.0030.01015.63
7.1.70.0030.00916.31
7.1.60.0120.00717.60
7.1.50.0110.00516.15
7.1.40.0030.00915.83
7.1.30.0100.00015.68
7.1.20.0030.01415.61
7.1.10.0030.01315.40
7.1.00.0010.04418.97
7.0.330.0100.00415.16
7.0.320.0070.00715.30
7.0.310.0070.00715.48
7.0.300.0040.01115.14
7.0.290.0030.00915.23
7.0.280.0000.00815.35
7.0.270.0030.00715.35
7.0.260.0070.00715.47
7.0.250.0040.01115.30
7.0.240.0030.00715.27
7.0.230.0030.00515.46
7.0.220.0040.01115.45
7.0.210.0040.00415.30
7.0.200.0040.00814.91
7.0.190.0030.00915.31
7.0.180.0100.00315.41
7.0.170.0060.00615.33
7.0.160.0030.01015.36
7.0.150.0060.00615.14
7.0.140.0050.03818.74
7.0.130.0100.00315.24
7.0.120.0030.01015.42
7.0.110.0030.00615.34
7.0.100.0070.01015.07
7.0.90.0060.00915.43
7.0.80.0030.00915.20
7.0.70.0040.00915.41
7.0.60.0070.03017.62
7.0.50.0120.03416.64
7.0.40.0050.02716.68
7.0.30.0180.02616.94
7.0.20.0200.03916.82
7.0.10.0030.04916.81
7.0.00.0030.03716.73
5.6.400.0070.01013.79
5.6.390.0070.00714.11
5.6.380.0070.00714.18
5.6.370.0090.00914.53
5.6.360.0060.00613.87
5.6.350.0070.01014.46
5.6.340.0040.00414.04
5.6.330.0040.01114.32
5.6.320.0090.00314.39
5.6.310.0000.00814.40
5.6.300.0070.00714.18
5.6.290.0030.01014.08
5.6.280.0090.03517.71
5.6.270.0130.00314.59
5.6.260.0110.00014.08
5.6.250.0000.01214.18
5.6.240.0060.01014.22
5.6.230.0030.00914.14
5.6.220.0070.00714.29
5.6.210.0060.02617.38
5.6.200.0080.04316.20
5.6.190.0070.03717.36
5.6.180.1560.02317.50
5.6.170.0160.03617.32
5.6.160.0100.02217.53
5.6.150.0090.02816.33
5.6.140.0100.04016.21
5.6.130.0050.05416.22
5.6.120.0030.04517.74
5.6.110.0120.04217.58
5.6.100.0030.05317.47
5.6.90.0080.04517.71
5.6.80.0080.04017.14
5.6.70.1750.01717.25
5.6.60.0090.00014.14
5.6.50.0000.00914.06
5.6.40.0070.00713.95
5.6.30.0060.00914.28
5.6.20.0110.00314.12
5.6.10.0080.01114.17
5.6.00.0090.00614.07
5.5.380.0060.00614.04
5.5.370.0100.00514.14
5.5.360.0070.00314.29
5.5.350.0180.04017.13
5.5.340.0100.02316.04
5.5.330.0070.02717.26
5.5.320.1190.02317.10
5.5.310.0200.03517.26
5.5.300.0080.03015.97
5.5.290.0090.04316.04
5.5.280.0030.02517.34
5.5.270.0050.03417.66
5.5.260.0100.04317.29
5.5.250.0050.02917.48
5.5.240.0120.04417.16
5.5.230.0000.01313.79
5.5.220.0130.00314.05
5.5.210.0030.01014.02
5.5.200.0000.01414.03
5.5.190.0040.00813.71
5.5.180.0130.00314.06
5.5.170.0110.00713.69
5.5.160.0060.00914.23
5.5.150.0110.00413.98
5.5.140.0050.00813.91
5.5.130.0090.00614.19
5.5.120.0030.01313.88
5.5.110.0100.00313.88
5.5.100.0140.00013.82
5.5.90.0050.00514.05
5.5.80.0040.00813.88
5.5.70.0060.00614.09
5.5.60.0060.00313.82
5.5.50.0040.01114.20
5.5.40.0060.00614.19
5.5.30.0040.01213.83
5.5.20.0000.01413.85
5.5.10.0040.00813.90
5.5.00.0080.00813.87
5.4.450.0300.03516.16
5.4.440.0470.04215.90
5.4.430.0060.03415.97
5.4.420.0120.02716.12
5.4.410.0080.03315.78
5.4.400.0120.02415.70
5.4.390.0020.03315.59
5.4.380.0050.03215.70
5.4.370.0130.02115.69
5.4.360.0200.02415.70
5.4.350.0040.02912.33
5.4.340.0110.01912.33
5.4.330.0090.00612.62
5.4.320.0060.01912.57
5.4.310.0070.02312.57
5.4.300.0060.02312.57
5.4.290.0050.02712.57
5.4.280.0080.02012.52
5.4.270.0080.02012.52
5.4.260.0050.02412.52
5.4.250.0060.02112.52
5.4.240.0060.02112.52
5.4.230.0040.02612.52
5.4.220.0030.02312.52
5.4.210.0050.02212.52
5.4.200.0090.02112.52
5.4.190.0050.02312.51
5.4.180.0030.02312.51
5.4.170.0060.02512.52
5.4.160.0100.02312.52
5.4.150.0030.02412.52
5.4.140.0080.02612.36
5.4.130.0050.02112.35
5.4.120.0070.01912.33
5.4.110.0040.02212.33
5.4.100.0050.02312.33
5.4.90.0040.02212.33
5.4.80.0040.02212.33
5.4.70.0060.01912.33
5.4.60.0010.02512.33
5.4.50.0070.02012.33
5.4.40.0050.02112.32
5.4.30.0050.02112.32
5.4.20.0070.02112.32
5.4.10.0060.02112.32
5.4.00.0060.02012.06
5.3.290.0050.02312.71
5.3.280.0020.02612.66
5.3.270.0050.02312.67
5.3.260.0060.02312.67
5.3.250.0050.02012.67
5.3.240.0020.02412.67
5.3.230.0050.02112.67
5.3.220.0020.02412.65
5.3.210.0060.02212.65
5.3.200.0060.02712.65
5.3.190.0070.02312.65
5.3.180.0060.02112.65
5.3.170.0070.02012.65
5.3.160.0030.02212.65
5.3.150.0030.02412.65
5.3.140.0100.02412.64
5.3.130.0110.02512.64
5.3.120.0060.02312.64
5.3.110.0100.02512.64
5.3.100.0070.02512.39
5.3.90.0040.02312.38
5.3.80.0090.01812.37
5.3.70.0020.02112.37
5.3.60.0050.02212.36
5.3.50.0050.02112.34
5.3.40.0060.02112.34
5.3.30.0050.02712.32
5.3.20.0040.02012.21
5.3.10.0050.02012.19
5.3.00.0040.02412.19
5.2.170.0070.0299.25
5.2.160.0050.0309.25
5.2.150.0050.0309.25
5.2.140.0050.0309.25
5.2.130.0050.0299.21
5.2.120.0050.0299.21
5.2.110.0040.0319.21
5.2.100.0040.0299.21
5.2.90.0050.0289.21
5.2.80.0030.0329.21
5.2.70.0040.0319.21
5.2.60.0070.0289.17
5.2.50.0070.0299.13
5.2.40.0060.0299.11
5.2.30.0050.0319.08
5.2.20.0060.0309.07
5.2.10.0090.0248.98
5.2.00.0050.0308.84
5.1.60.0030.0278.12
5.1.50.0060.0248.12
5.1.40.0050.0258.11
5.1.30.0050.0268.45
5.1.20.0060.0278.48
5.1.10.0070.0348.20
5.1.00.0080.0328.20
5.0.50.0040.0286.68
5.0.40.0060.0256.53
5.0.30.0040.0416.35
5.0.20.0070.0246.31
5.0.10.0050.0286.29
5.0.00.0080.0696.28
4.4.90.0050.0184.78
4.4.80.0070.0154.76
4.4.70.0020.0174.75
4.4.60.0040.0154.75
4.4.50.0040.0194.77
4.4.40.0030.0274.71
4.4.30.0040.0144.76
4.4.20.0020.0164.84
4.4.10.0030.0154.85
4.4.00.0020.0264.76
4.3.110.0020.0174.67
4.3.100.0010.0174.66
4.3.90.0040.0144.64
4.3.80.0000.0274.58
4.3.70.0020.0164.63
4.3.60.0040.0134.63
4.3.50.0000.0184.63
4.3.40.0030.0274.54
4.3.30.0040.0203.30
4.3.20.0040.0203.29
4.3.10.0050.0183.24
4.3.00.0170.0177.15

preferences:
51.23 ms | 401 KiB | 5 Q