1
0
Fork 0

Merge pull request #100041 from Ivorforce/optimize-string-similarity

Optimize String.similarity by avoiding allocation for bigrams.
This commit is contained in:
Thaddeus Crews 2024-12-10 14:16:00 -06:00
commit ba66c478c0
No known key found for this signature in database
GPG Key ID: 62181B86FE9E5D84
1 changed files with 7 additions and 7 deletions

View File

@ -3860,17 +3860,17 @@ float String::similarity(const String &p_string) const {
return 0.0f; return 0.0f;
} }
Vector<String> src_bigrams = bigrams(); const int src_size = length() - 1;
Vector<String> tgt_bigrams = p_string.bigrams(); const int tgt_size = p_string.length() - 1;
int src_size = src_bigrams.size(); const int sum = src_size + tgt_size;
int tgt_size = tgt_bigrams.size();
int sum = src_size + tgt_size;
int inter = 0; int inter = 0;
for (int i = 0; i < src_size; i++) { for (int i = 0; i < src_size; i++) {
const char32_t i0 = get(i);
const char32_t i1 = get(i + 1);
for (int j = 0; j < tgt_size; j++) { for (int j = 0; j < tgt_size; j++) {
if (src_bigrams[i] == tgt_bigrams[j]) { if (i0 == p_string.get(j) && i1 == p_string.get(j + 1)) {
inter++; inter++;
break; break;
} }