mirror of https://github.com/godotengine/godot
Optimize String.similarity by avoiding allocation for bigrams.
This commit is contained in:
parent
1f47e4c4e3
commit
875b48366c
|
|
@ -4002,17 +4002,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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue