Skip to content

Commit 62b4cc0

Browse files
committed
Optimized speed of initializing reserved words list.
1 parent 51a660e commit 62b4cc0

File tree

1 file changed

+4
-15
lines changed

1 file changed

+4
-15
lines changed

lib/SqlFormatter.php

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -178,8 +178,10 @@ protected static function init()
178178
{
179179
if (self::$init) return;
180180

181-
// Sort reserved word list from longest word to shortest
182-
usort(self::$reserved, array('SqlFormatter', 'sortLength'));
181+
// Sort reserved word list from longest word to shortest, 3x faster than usort
182+
$reservedMap = array_combine(self::$reserved, array_map('strlen', self::$reserved));
183+
arsort($reservedMap);
184+
self::$reserved = array_keys($reservedMap);
183185

184186
// Set up regular expressions
185187
self::$regex_boundaries = '('.implode('|',array_map(array('SqlFormatter', 'quote_regex'),self::$boundaries)).')';
@@ -1030,19 +1032,6 @@ protected static function highlightVariable($value)
10301032
}
10311033
}
10321034

1033-
/**
1034-
* Helper function for sorting the list of reserved words by length
1035-
*
1036-
* @param String $a The first string
1037-
* @param String $b The second string
1038-
*
1039-
* @return int The comparison of the string lengths
1040-
*/
1041-
private static function sortLength($a, $b)
1042-
{
1043-
return strlen($b) - strlen($a);
1044-
}
1045-
10461035
/**
10471036
* Helper function for building regular expressions for reserved words and boundary characters
10481037
*

0 commit comments

Comments
 (0)