3v4l.org

run code in 300+ PHP versions simultaneously
<?php /** * マルチバイト文字列、英数字の混じった文字列を1文字ずつ配列に分割 * 参考:http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1417635014# * mb_split, str_split, preg_splitことごとく使えない。 */ function mbStringToArray($string, $encoding = 'UTF-8') { $arrayResult = array(); while ($iLen = mb_strlen($string, $encoding)) { array_push($arrayResult, mb_substr($string, 0, 1, $encoding)); $string = mb_substr($string, 1, $iLen, $encoding); } return $arrayResult; } /** * 編集距離(レーベンシュタイン距離)を求める(マルチバイト文字対応) * @param $str1 * @param $str2 * @param $encoding * @param $costReplace * @return 数値(距離),かぶっていた文字の数 */ function LevenshteinDistance($str1, $str2, $costReplace = 2, $encoding = 'UTF-8') { $count_same_letter = 0; $d = array(); $mb_len1 = mb_strlen($str1, $encoding); $mb_len2 = mb_strlen($str2, $encoding); $mb_str1 = mbStringToArray($str1, $encoding); $mb_str2 = mbStringToArray($str2, $encoding); for ($i1 = 0; $i1 <= $mb_len1; $i1++) { $d[$i1] = array(); $d[$i1][0] = $i1; } for ($i2 = 0; $i2 <= $mb_len2; $i2++) { $d[0][$i2] = $i2; } for ($i1 = 1; $i1 <= $mb_len1; $i1++) { for ($i2 = 1; $i2 <= $mb_len2; $i2++) { // $cost = ($str1[$i1 - 1] == $str2[$i2 - 1]) ? 0 : 1; if ($mb_str1[$i1 - 1] === $mb_str2[$i2 - 1]) { $cost = 0; $count_same_letter++; } else { $cost = $costReplace; //置換 } $d[$i1][$i2] = min($d[$i1 - 1][$i2] + 1, //挿入 $d[$i1][$i2 - 1] + 1, //削除 $d[$i1 - 1][$i2 - 1] + $cost); } } return $d[$mb_len1][$mb_len2]; //return array('distance' => $d[$mb_len1][$mb_len2], 'count_same_letter' => $count_same_letter); } echo LevenshteinDistance("aaa","aax",,"UTF-8"); ?>

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)
5.4.280.0110.03512.39
5.4.270.0140.03912.39
5.4.260.0060.03812.39
5.4.250.0070.03712.39
5.4.240.0110.04412.39
5.4.230.0100.04012.38
5.4.220.0090.04012.38
5.4.210.0050.04012.39
5.4.200.0090.04112.38
5.4.190.0100.04012.38
5.4.180.0080.05312.38
5.4.170.0100.05412.38
5.4.160.0080.04512.38
5.4.150.0080.04112.38
5.4.140.0110.06212.07
5.4.130.0090.04812.05
5.4.120.0100.04712.02
5.4.110.0070.05212.01
5.4.100.0070.03812.01
5.4.90.0080.04112.01
5.4.80.0050.04012.01
5.4.70.0130.03412.01
5.4.60.0060.03512.00
5.4.50.0070.03612.01
5.4.40.0080.03712.00
5.4.30.0100.03411.99
5.4.20.0080.04611.99
5.4.10.0080.05012.00
5.4.00.0070.05311.48
5.3.280.0070.05312.70
5.3.270.0150.04712.72
5.3.260.0150.04212.72
5.3.250.0070.03712.71
5.3.240.0090.03512.71
5.3.230.0090.03712.71
5.3.220.0110.04712.68
5.3.210.0040.04212.68
5.3.200.0090.05312.68
5.3.190.0090.05212.68
5.3.180.0080.04512.68
5.3.170.0110.04612.66
5.3.160.0120.04812.67
5.3.150.0100.03812.67
5.3.140.0050.04112.66
5.3.130.0080.04512.66
5.3.120.0100.05812.66
5.3.110.0080.07612.66
5.3.100.0070.05312.12
5.3.90.0130.04812.09
5.3.80.0150.05412.08
5.3.70.0130.03812.08
5.3.60.0070.04112.06
5.3.50.0140.03912.01
5.3.40.0070.05012.01
5.3.30.0080.05011.97
5.3.20.0090.03911.75
5.3.10.0090.03511.72
5.3.00.0090.03811.71
5.2.170.0100.0369.20
5.2.160.0050.0379.20
5.2.150.0060.0409.21
5.2.140.0050.0359.20
5.2.130.0080.0319.16
5.2.120.0070.0469.16
5.2.110.0080.0399.16
5.2.100.0040.0319.17
5.2.90.0050.0319.16
5.2.80.0050.0409.16
5.2.70.0050.0349.15
5.2.60.0040.0339.12
5.2.50.0080.0409.09
5.2.40.0060.0479.06
5.2.30.0100.0419.04
5.2.20.0160.0869.02
5.2.10.0100.0398.93
5.2.00.0070.0298.81
5.1.60.0050.0398.09
5.1.50.0060.0368.09
5.1.40.0050.0418.07
5.1.30.0060.0428.41
5.1.20.0060.0438.44
5.1.10.0120.0578.17
5.1.00.0110.0658.17
5.0.50.0050.0226.65
5.0.40.0060.0206.52
5.0.30.0080.0406.32
5.0.20.0050.0246.29
5.0.10.0030.0236.27
5.0.00.0040.0306.26
4.4.90.0020.0164.78
4.4.80.0050.0154.75
4.4.70.0040.0224.75
4.4.60.0050.0164.75
4.4.50.0050.0214.77
4.4.40.0060.0284.71
4.4.30.0070.0184.76
4.4.20.0060.0204.85
4.4.10.0040.0174.85
4.4.00.0050.0244.76
4.3.110.0020.0174.66
4.3.100.0040.0204.66
4.3.90.0090.0254.63
4.3.80.0020.0274.59
4.3.70.0040.0234.63
4.3.60.0050.0204.62
4.3.50.0030.0184.63
4.3.40.0030.0274.54
4.3.30.0050.0193.31
4.3.20.0020.0213.29
4.3.10.0040.0193.27
4.3.00.0070.01013.64

preferences:
140.45 ms | 1394 KiB | 7 Q