@marekszpak I tried running this on a huge machine but it kept not returning. Because the systems are small, I modified the code to compute univariate polynomials using one call to Groebner:-Basis in an elimination ordering.
Q := map(parse, readdata("dataQ.txt",string)): nops(Q);
ct := [seq(seq(seq([Q[i],Q[j],Q[k]], k=j+1..nops(Q)), j=i+1..nops(Q)), i=1..nops(Q))]:
sp := proc(sys)
local var, bad, pol, sol;
var := [op(indets(sys))];
var, bad := var, var[2..-1];
pol := Groebner:-Basis(sys,lexdeg(bad,[var]),method=direct);
if has(pol,bad) then return NULL; end if;
sol := RootFinding:-Isolate(pol,var);
sol := nops(select(e -> rhs(e) > 0, sol));
if sol > 0 then return [pol,sol,sys]; else return NULL; end if;
TIMER := time[real]():
ct := Grid:-Map(sp, ct):
time[real]() - TIMER;
To answer your questions, the CodeTools:-Usage measure of real time should be accurate. It can't figure out CPU time because the Grid package launches separate Maple processes and CPU time is accumulated per process. The UnivariatePolynomial command is Maple code which uses a lot of memory in proportion to the result, so it certainly generates a lot of garbage, but in theory it should be collected. Other possible culprits are the FGb C library used to compute Groebner bases or the RS library used by Isolate, either of which could hoard memory.
I'll see if I can get your example to work. It's a good benchmark for some of the stuff we are currently working on at SFU.