Merge pull request #102059 from AThousandShips/fix_cowdata_performance
[4.4] [Core] Fix performance issues in some `CowData` methods
This commit is contained in:
@ -436,20 +436,19 @@ Error CowData<T>::_realloc(Size p_alloc_size) {
|
||||
|
||||
template <typename T>
|
||||
typename CowData<T>::Size CowData<T>::find(const T &p_val, Size p_from) const {
|
||||
Size ret = -1;
|
||||
|
||||
if (p_from < 0 || size() == 0) {
|
||||
return ret;
|
||||
if (p_from < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
for (Size i = p_from; i < size(); i++) {
|
||||
if (get(i) == p_val) {
|
||||
ret = i;
|
||||
break;
|
||||
const Size s = size();
|
||||
|
||||
for (Size i = p_from; i < s; i++) {
|
||||
if (_ptr[i] == p_val) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
return -1;
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
@ -464,7 +463,7 @@ typename CowData<T>::Size CowData<T>::rfind(const T &p_val, Size p_from) const {
|
||||
}
|
||||
|
||||
for (Size i = p_from; i >= 0; i--) {
|
||||
if (get(i) == p_val) {
|
||||
if (_ptr[i] == p_val) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
@ -474,8 +473,9 @@ typename CowData<T>::Size CowData<T>::rfind(const T &p_val, Size p_from) const {
|
||||
template <typename T>
|
||||
typename CowData<T>::Size CowData<T>::count(const T &p_val) const {
|
||||
Size amount = 0;
|
||||
for (Size i = 0; i < size(); i++) {
|
||||
if (get(i) == p_val) {
|
||||
const Size s = size();
|
||||
for (Size i = 0; i < s; i++) {
|
||||
if (_ptr[i] == p_val) {
|
||||
amount++;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user