forked from lix-project/lix
* Better stats.
This commit is contained in:
parent
d39d3c6264
commit
e41b5828db
|
@ -102,7 +102,8 @@ EvalState::EvalState()
|
||||||
, baseEnvDispl(0)
|
, baseEnvDispl(0)
|
||||||
, staticBaseEnv(false, 0)
|
, staticBaseEnv(false, 0)
|
||||||
{
|
{
|
||||||
nrValues = nrEnvs = nrEvaluated = recursionDepth = maxRecursionDepth = 0;
|
nrEnvs = nrValuesInEnvs = nrValuesInLists = nrValues = 0;
|
||||||
|
nrEvaluated = recursionDepth = maxRecursionDepth = 0;
|
||||||
deepestStack = (char *) -1;
|
deepestStack = (char *) -1;
|
||||||
|
|
||||||
createBaseEnv();
|
createBaseEnv();
|
||||||
|
@ -250,7 +251,6 @@ Value * EvalState::lookupVar(Env * env, const VarRef & var)
|
||||||
|
|
||||||
Value * EvalState::allocValues(unsigned int count)
|
Value * EvalState::allocValues(unsigned int count)
|
||||||
{
|
{
|
||||||
nrValues += count;
|
|
||||||
return new Value[count]; // !!! check destructor
|
return new Value[count]; // !!! check destructor
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -258,6 +258,7 @@ Value * EvalState::allocValues(unsigned int count)
|
||||||
Env & EvalState::allocEnv(unsigned int size)
|
Env & EvalState::allocEnv(unsigned int size)
|
||||||
{
|
{
|
||||||
nrEnvs++;
|
nrEnvs++;
|
||||||
|
nrValuesInEnvs += size;
|
||||||
Env * env = (Env *) malloc(sizeof(Env) + size * sizeof(Value));
|
Env * env = (Env *) malloc(sizeof(Env) + size * sizeof(Value));
|
||||||
return *env;
|
return *env;
|
||||||
}
|
}
|
||||||
|
@ -268,6 +269,7 @@ void EvalState::mkList(Value & v, unsigned int length)
|
||||||
v.type = tList;
|
v.type = tList;
|
||||||
v.list.length = length;
|
v.list.length = length;
|
||||||
v.list.elems = allocValues(length);
|
v.list.elems = allocValues(length);
|
||||||
|
nrValuesInLists += length;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -541,6 +543,7 @@ void EvalState::callFunction(Value & fun, Value & arg, Value & v)
|
||||||
primOp->primOp.fun(*this, vArgs, v);
|
primOp->primOp.fun(*this, vArgs, v);
|
||||||
} else {
|
} else {
|
||||||
Value * v2 = allocValues(2);
|
Value * v2 = allocValues(2);
|
||||||
|
nrValues += 2;
|
||||||
v2[0] = fun;
|
v2[0] = fun;
|
||||||
v2[1] = arg;
|
v2[1] = arg;
|
||||||
v.type = tPrimOpApp;
|
v.type = tPrimOpApp;
|
||||||
|
@ -1039,8 +1042,14 @@ void EvalState::printStats()
|
||||||
printMsg(v, format(" stack space used: %1% bytes") % (&x - deepestStack));
|
printMsg(v, format(" stack space used: %1% bytes") % (&x - deepestStack));
|
||||||
printMsg(v, format(" max eval() nesting depth: %1%") % maxRecursionDepth);
|
printMsg(v, format(" max eval() nesting depth: %1%") % maxRecursionDepth);
|
||||||
printMsg(v, format(" stack space per eval() level: %1% bytes") % ((&x - deepestStack) / (float) maxRecursionDepth));
|
printMsg(v, format(" stack space per eval() level: %1% bytes") % ((&x - deepestStack) / (float) maxRecursionDepth));
|
||||||
printMsg(v, format(" values allocated: %1%") % nrValues);
|
printMsg(v, format(" environments allocated: %1% (%2% bytes)")
|
||||||
printMsg(v, format(" environments allocated: %1%") % nrEnvs);
|
% nrEnvs % (nrEnvs * sizeof(Env)));
|
||||||
|
printMsg(v, format(" values allocated in environments: %1% (%2% bytes)")
|
||||||
|
% nrValuesInEnvs % (nrValuesInEnvs * sizeof(Value)));
|
||||||
|
printMsg(v, format(" values allocated in lists: %1% (%2% bytes)")
|
||||||
|
% nrValuesInLists % (nrValuesInLists * sizeof(Value)));
|
||||||
|
printMsg(v, format(" misc. values allocated: %1% (%2% bytes) ")
|
||||||
|
% nrValues % (nrValues * sizeof(Value)));
|
||||||
printMsg(v, format(" symbols in symbol table: %1%") % symbols.size());
|
printMsg(v, format(" symbols in symbol table: %1%") % symbols.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -280,8 +280,10 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
unsigned long nrValues;
|
|
||||||
unsigned long nrEnvs;
|
unsigned long nrEnvs;
|
||||||
|
unsigned long nrValuesInEnvs;
|
||||||
|
unsigned long nrValuesInLists;
|
||||||
|
unsigned long nrValues;
|
||||||
unsigned long nrEvaluated;
|
unsigned long nrEvaluated;
|
||||||
unsigned int recursionDepth;
|
unsigned int recursionDepth;
|
||||||
unsigned int maxRecursionDepth;
|
unsigned int maxRecursionDepth;
|
||||||
|
|
Loading…
Reference in a new issue