LanguageNameSearch: Optimize levenshteinDistance

1. Do string comparison for equality early in the method so that we can
   do early return if it passes.
2. Move the zero length check for string up for early return. This may
   not have any significant change in performance though.

Change-Id: I86bdd612a4a31c5ebfac6bcd7687b829acc69cda
This commit is contained in:
Santhosh Thottingal
2017-11-30 16:38:41 +05:30
parent 447c09d462
commit 3bf7361262

View File

@@ -105,16 +105,16 @@ class LanguageNameSearch {
* @return int
*/
public static function levenshteinDistance( $str1, $str2 ) {
if ( $str1 === $str2 ) {
return 0;
}
$length1 = mb_strlen( $str1, 'UTF-8' );
$length2 = mb_strlen( $str2, 'UTF-8' );
if ( $length1 < $length2 ) {
return self::levenshteinDistance( $str2, $str1 );
}
if ( $length1 === 0 ) {
return $length2;
}
if ( $str1 === $str2 ) {
return 0;
if ( $length1 < $length2 ) {
return self::levenshteinDistance( $str2, $str1 );
}
$prevRow = range( 0, $length2 );
for ( $i = 0; $i < $length1; $i++ ) {