forked from lix-project/lix
* Keep some more stats.
This commit is contained in:
parent
e879a0371b
commit
76feaf016a
|
@ -119,6 +119,7 @@ EvalState::EvalState()
|
||||||
{
|
{
|
||||||
nrEnvs = nrValuesInEnvs = nrValues = nrListElems = 0;
|
nrEnvs = nrValuesInEnvs = nrValues = nrListElems = 0;
|
||||||
nrEvaluated = recursionDepth = maxRecursionDepth = 0;
|
nrEvaluated = recursionDepth = maxRecursionDepth = 0;
|
||||||
|
nrAttrsets = nrOpUpdates = nrOpUpdateValuesCopied = 0;
|
||||||
deepestStack = (char *) -1;
|
deepestStack = (char *) -1;
|
||||||
|
|
||||||
createBaseEnv();
|
createBaseEnv();
|
||||||
|
@ -294,6 +295,7 @@ void EvalState::mkAttrs(Value & v)
|
||||||
{
|
{
|
||||||
v.type = tAttrs;
|
v.type = tAttrs;
|
||||||
v.attrs = new (UseGC) Bindings;
|
v.attrs = new (UseGC) Bindings;
|
||||||
|
nrAttrsets++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -758,6 +760,8 @@ void ExprOpUpdate::eval(EvalState & state, Env & env, Value & v)
|
||||||
state.evalAttrs(env, e1, v1);
|
state.evalAttrs(env, e1, v1);
|
||||||
state.evalAttrs(env, e2, v2);
|
state.evalAttrs(env, e2, v2);
|
||||||
|
|
||||||
|
state.nrOpUpdates++;
|
||||||
|
|
||||||
if (v1.attrs->size() == 0) { v = v2; return; }
|
if (v1.attrs->size() == 0) { v = v2; return; }
|
||||||
if (v2.attrs->size() == 0) { v = v1; return; }
|
if (v2.attrs->size() == 0) { v = v1; return; }
|
||||||
|
|
||||||
|
@ -768,6 +772,8 @@ void ExprOpUpdate::eval(EvalState & state, Env & env, Value & v)
|
||||||
mkCopy(a.value, i->second.value);
|
mkCopy(a.value, i->second.value);
|
||||||
a.pos = i->second.pos;
|
a.pos = i->second.pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
state.nrOpUpdateValuesCopied += v.attrs->size();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1107,6 +1113,9 @@ void EvalState::printStats()
|
||||||
% nrListElems % (nrListElems * sizeof(Value *)));
|
% nrListElems % (nrListElems * sizeof(Value *)));
|
||||||
printMsg(v, format(" misc. values allocated: %1% (%2% bytes)")
|
printMsg(v, format(" misc. values allocated: %1% (%2% bytes)")
|
||||||
% nrValues % (nrValues * sizeof(Value)));
|
% nrValues % (nrValues * sizeof(Value)));
|
||||||
|
printMsg(v, format(" attribute sets allocated: %1%") % nrAttrsets);
|
||||||
|
printMsg(v, format(" right-biased unions: %1%") % nrOpUpdates);
|
||||||
|
printMsg(v, format(" values copied in right-biased unions: %1%") % nrOpUpdateValuesCopied);
|
||||||
printMsg(v, format(" symbols in symbol table: %1%") % symbols.size());
|
printMsg(v, format(" symbols in symbol table: %1%") % symbols.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -310,6 +310,9 @@ private:
|
||||||
unsigned long nrValues;
|
unsigned long nrValues;
|
||||||
unsigned long nrListElems;
|
unsigned long nrListElems;
|
||||||
unsigned long nrEvaluated;
|
unsigned long nrEvaluated;
|
||||||
|
unsigned long nrAttrsets;
|
||||||
|
unsigned long nrOpUpdates;
|
||||||
|
unsigned long nrOpUpdateValuesCopied;
|
||||||
unsigned int recursionDepth;
|
unsigned int recursionDepth;
|
||||||
unsigned int maxRecursionDepth;
|
unsigned int maxRecursionDepth;
|
||||||
char * deepestStack; /* for measuring stack usage */
|
char * deepestStack; /* for measuring stack usage */
|
||||||
|
|
Loading…
Reference in a new issue