json_view: keep accept()'s string check out of run()
Clang 23 made run() slower on files without escapes (mesh.pretty +15 %) when the check-only string path was a separate call target. Dispatch inside slow_string() instead, so the call in run() is the same as before, and skip the SIMD run scan between escapes that follow each other (twitterescaped 1.11 -> 0.82 against the previous commit). Signed-off-by: Niels Lohmann <mail@nlohmann.me>
This commit is contained in:
3 files changed
+36
-36
No files matched your search
@@ -553,6 +553,20 @@ TEST_CASE("json_view builder")
|
||||
}
|
||||
}
|
||||
|
||||
SECTION("escapes in a row")
|
||||
{
|
||||
for (const char* content :
|
||||
{
|
||||
"\\n", "\\n\\t\\\\", "\\u00e9\\u00e9\\u4e2d", "\\u00e9\\u00e", "\\u00e9\\", "\\n\\q", "\\n\\ud83d\\ude00\\n",
|
||||
"\\ud83d\\ude00\\ud83d", "\\n\\n\\n abc \\n\\n", "\\n\x01", "\\n\xC3\x28", "\\n\\"
|
||||
})
|
||||
{
|
||||
check_accept(std::string("[\"") + content + "\"]");
|
||||
check_accept(std::string("[\"") + content);
|
||||
check_accept(std::string("{\"") + content + "\":1}");
|
||||
}
|
||||
}
|
||||
|
||||
SECTION("test files")
|
||||
{
|
||||
for (const char* name :
|
||||
|
||||
Reference in new issue
Block a user