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.