-
Notifications
You must be signed in to change notification settings - Fork 80
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
nmos-cpp-registry spends a lot of time in regex code #48
Comments
I've checked the On the other hand, the second call-stack which has a |
https://github.com/pboettch/json-schema-validator has had a "complete rewrite of the validator - aiming at a 2.0-release" and one of the things Patrick Boettcher has done is to cache the built regexes. I'll have a play with the latest version to see how compatible and how stable it is. |
…idation (cherry picked from commit d7cc99b1ca6b1bc83c1644f0e3a5478a6adefce7)
…v1.0.0 to current master (aiming at v2.0.0) (cherry picked from commit 8f9b67503e65104b88e4fb79d7630d1990a4d8dc)
…om/nlohmann/json/blob/v3.5.0/single_include/nlohmann/json.hpp) (cherry picked from commit 113a0afea466dc807779d6848bf1dda43a550ed4)
Hi @billt-hlit. I've updated to the rewritten json-schema-validator on a branch - https://github.com/sony/nmos-cpp/tree/pboettch-json-schema-validator-update. I've tested it works. I still need to fix some compile warnings for it, but if you were to have a chance to compare performance in your environment, that would be wonderful. Understand if you've moved on to other things! Thanks. |
That's a big improvement! CPU usage goes down from 90%+ to 20%+ |
… which don't implement std::pair conditionally-explicit constructors (retroactively applied to C++11); we could use std::map::emplace (but we were trying to support gcc 4.7 where possible, in which it is missing) (cherry picked from commit f838cf99835aee0f6dd6c1c2a232a5753a972e22)
(cherry picked from commit 3d4c217c20b35aabdd04e45fce6d7cb3a5c2cacb)
(cherry picked from commit bf6c5522ef2e4839f6b8114f1664a87c73263834)
(cherry picked from commit 60741238bce6f31389c9df4a5767212232f89d78)
(cherry picked from commit b36d7d295d9f765b498affe0fb1ae1b90c903196)
I've got impatient and committed patched versions of nlohmann/json version 3.5.0 and pboettch/json-schema-validator based on my PRs on those projects:
I will keep an eye out for official releases of these dependencies, but I'm going to close this issue based on our testing. Thanks, @billt-hlit. |
When running continuous registry updates from my node, I see the following in "perf top"
Repeatedly breaking on the BracketMatcher function show two principal contributors. The biggest one is the JSON validator, which appears to be recompiling its regexps at run time, possibly because the it's rebuilding the registration API frequently(?!):
[sorry about the long comments, but I haven't had any luck attaching files to github tickets]
Runner-up looks to be the user of that API:
The text was updated successfully, but these errors were encountered: