mirror of
https://github.com/fmtlib/fmt.git
synced 2024-11-07 17:41:11 +00:00
Skip strchr for the common case
This commit is contained in:
parent
5614289dd8
commit
aeb6add336
@ -2139,11 +2139,11 @@ FMT_CONSTEXPR void parse_format_string(
|
|||||||
Handler &handler_;
|
Handler &handler_;
|
||||||
} write{handler};
|
} write{handler};
|
||||||
auto begin = format_str.data(), end = begin + format_str.size();
|
auto begin = format_str.data(), end = begin + format_str.size();
|
||||||
for (;;) {
|
while (begin != end) {
|
||||||
// Doing two passes with memchr (one for '{' and another for '}') is up to
|
// Doing two passes with memchr (one for '{' and another for '}') is up to
|
||||||
// 2.5x faster than the naive one-pass implementation on big format strings.
|
// 2.5x faster than the naive one-pass implementation on big format strings.
|
||||||
const Char *p = FMT_NULL;
|
const Char *p = begin;
|
||||||
if (!find<IS_CONSTEXPR>(begin, end, '{', p))
|
if (*begin != '{' && !find<IS_CONSTEXPR>(begin, end, '{', p))
|
||||||
return write(begin, end);
|
return write(begin, end);
|
||||||
write(begin, p);
|
write(begin, p);
|
||||||
++p;
|
++p;
|
||||||
@ -2165,7 +2165,6 @@ FMT_CONSTEXPR void parse_format_string(
|
|||||||
return handler.on_error("missing '}' in format string");
|
return handler.on_error("missing '}' in format string");
|
||||||
}
|
}
|
||||||
begin = pointer_from(it) + 1;
|
begin = pointer_from(it) + 1;
|
||||||
if (begin == end) return;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user