diff options
author | Aras Pranckevicius <aras_p> | 2022-02-04 12:38:05 +0300 |
---|---|---|
committer | Jacques Lucke <jacques@blender.org> | 2022-02-04 12:38:05 +0300 |
commit | a20cfb9eff0ec88fcb25007d08b2c0a380de9f0e (patch) | |
tree | 12578522b9aa8ba59450b2647a0a22487cdf0273 /source/blender/blenlib | |
parent | 2d429bfdf8a4fd25891ba682618d6ba25435410b (diff) |
BLI: use methods specialized for finding a single char in StringRef
Previously, these methods used the more generic substring-finding
algorithm, which is more complex and slower.
Using the more specialized methods results in a noticable speedup
in the obj importer (D13958).
Differential Revision: https://developer.blender.org/D14012
Diffstat (limited to 'source/blender/blenlib')
-rw-r--r-- | source/blender/blenlib/BLI_string_ref.hh | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/source/blender/blenlib/BLI_string_ref.hh b/source/blender/blenlib/BLI_string_ref.hh index e3dd8afd588..f72106aa961 100644 --- a/source/blender/blenlib/BLI_string_ref.hh +++ b/source/blender/blenlib/BLI_string_ref.hh @@ -358,7 +358,9 @@ constexpr int64_t StringRefBase::find_first_of(StringRef chars, int64_t pos) con constexpr int64_t StringRefBase::find_first_of(char c, int64_t pos) const { - return this->find_first_of(StringRef(&c, 1), pos); + BLI_assert(pos >= 0); + return index_or_npos_to_int64( + std::string_view(*this).find_first_of(c, static_cast<size_t>(pos))); } constexpr int64_t StringRefBase::find_last_of(StringRef chars, int64_t pos) const @@ -370,7 +372,9 @@ constexpr int64_t StringRefBase::find_last_of(StringRef chars, int64_t pos) cons constexpr int64_t StringRefBase::find_last_of(char c, int64_t pos) const { - return this->find_last_of(StringRef(&c, 1), pos); + BLI_assert(pos >= 0); + return index_or_npos_to_int64( + std::string_view(*this).find_last_of(c, static_cast<size_t>(pos))); } constexpr int64_t StringRefBase::find_first_not_of(StringRef chars, int64_t pos) const @@ -382,7 +386,9 @@ constexpr int64_t StringRefBase::find_first_not_of(StringRef chars, int64_t pos) constexpr int64_t StringRefBase::find_first_not_of(char c, int64_t pos) const { - return this->find_first_not_of(StringRef(&c, 1), pos); + BLI_assert(pos >= 0); + return index_or_npos_to_int64( + std::string_view(*this).find_first_not_of(c, static_cast<size_t>(pos))); } constexpr int64_t StringRefBase::find_last_not_of(StringRef chars, int64_t pos) const @@ -394,7 +400,9 @@ constexpr int64_t StringRefBase::find_last_not_of(StringRef chars, int64_t pos) constexpr int64_t StringRefBase::find_last_not_of(char c, int64_t pos) const { - return this->find_last_not_of(StringRef(&c, 1), pos); + BLI_assert(pos >= 0); + return index_or_npos_to_int64( + std::string_view(*this).find_last_not_of(c, static_cast<size_t>(pos))); } constexpr StringRef StringRefBase::trim() const |