Performance improvement
Konstantin Kharlamov
Hi-Angel at yandex.ru
Thu May 22 20:16:28 BST 2025
On Thu, 2025-05-22 at 19:21 +0300, Igor Mironchik wrote:
> Hi.
>
> I'd like to ask you, guys, maybe I'm a dumb a little, and you know
> how
> to optimize a following function.
>
> inline long long int
> skipIf(long long int startPos, const QString &line,
> const std::function<bool(const QChar &)> &pred,
> long long int endPos = -1)
> {
> const auto length = (endPos < line.length() && endPos > -1 ?
> endPos
> : line.length());
>
> while (startPos < length && pred(line[startPos])) {
> ++startPos;
> }
>
> return startPos;
> }
Assuming the input is completely arbitrary and isn't in some way
preprocessed (e.g. sorted or whatever), there's nothing to optimize.
You have a O(n) algorithm, meaning you need to take up to n steps to
find something, and your function directly implements such cycle. The
function body is simple too, so with compiler optimizations enabled you
should get the best possible machine code out of this.
More information about the kde-devel
mailing list