The predicate once/1 only cuts away choice points, but leaves intact the trail. The trail is usually extended either by variable unifications or
even by constraints of the constraint solvers.
So your chain of tests collects a lot of data. There is a Prolog folklore
which would help you. Using double negation frees resources, this construct
is therefore often nicknamed garbage collection.
Just rewrite your code to:
runtest:-
\+ \+ t1,
\+ \+ t2,
\+ \+ t3,
.
.
\+ \+ t100.
But please note that your test will now also measure the time
to tear down the trail, possibly changing old results, since sometime
the time to tear down the trail can be measurable.
And last but not least, of course the folklore garbage collection
double negation only works when it is ok to call the goal once.
Bye