mirror of
https://github.com/jbeder/yaml-cpp.git
synced 2025-09-09 12:41:17 +00:00
Cache scalar regexes
This improves performance on the test.yaml attached to #158 by about 35% on my machine (0.39s -> 0.25s), as measured by `time build/util/parse < test.yaml > /dev/null`.
This commit is contained in:

committed by
Jesse Beder

parent
9e37409b4b
commit
8c35a8ffab
@@ -165,6 +165,15 @@ inline const RegEx& EndScalarInFlow() {
|
|||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline const RegEx& ScanScalarEndInFlow() {
|
||||||
|
static const RegEx e = (EndScalarInFlow() || (BlankOrBreak() + Comment()));
|
||||||
|
return e;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline const RegEx& ScanScalarEnd() {
|
||||||
|
static const RegEx e = EndScalar() || (BlankOrBreak() + Comment());
|
||||||
|
return e;
|
||||||
|
}
|
||||||
inline const RegEx& EscSingleQuote() {
|
inline const RegEx& EscSingleQuote() {
|
||||||
static const RegEx e = RegEx("\'\'");
|
static const RegEx e = RegEx("\'\'");
|
||||||
return e;
|
return e;
|
||||||
|
@@ -297,8 +297,8 @@ void Scanner::ScanPlainScalar() {
|
|||||||
|
|
||||||
// set up the scanning parameters
|
// set up the scanning parameters
|
||||||
ScanScalarParams params;
|
ScanScalarParams params;
|
||||||
params.end = (InFlowContext() ? Exp::EndScalarInFlow() : Exp::EndScalar()) ||
|
params.end =
|
||||||
(Exp::BlankOrBreak() + Exp::Comment());
|
(InFlowContext() ? Exp::ScanScalarEndInFlow() : Exp::ScanScalarEnd());
|
||||||
params.eatEnd = false;
|
params.eatEnd = false;
|
||||||
params.indent = (InFlowContext() ? 0 : GetTopIndent() + 1);
|
params.indent = (InFlowContext() ? 0 : GetTopIndent() + 1);
|
||||||
params.fold = FOLD_FLOW;
|
params.fold = FOLD_FLOW;
|
||||||
|
Reference in New Issue
Block a user