[GAP Forum] Speedup of GAP program
Kasper Andersen
kksa at math.ku.dk
Thu Jul 5 13:40:42 BST 2007
Hi,
In connection with a joint project with Bob Oliver and Joana Ventura I
have been carrying out a number of computations for the 2-groups of order
at most 2^8 in Magma. To check them and to learn GAP at the same time, I
have tried to port my programs to GAP.
Unfortunately GAP seems to be significantly slower (a factor of acround
2.7) than Magma. Before I go any further I wonder if there is a way to
speed up GAP. As a test I have been running the following GAP program:
iscritical := function(S,P)
return 1;
end;
criticalsubgroups := function(S)
local kappa,SmodZ,L;
if IsAbelian(S) then
return [];
else
# Only check subgroups containg Z(S)
kappa:=NaturalHomomorphismByNormalSubgroup(S,Center(S));
SmodZ:=FactorGroup(S,Center(S));
L:=SubgroupsSolvableGroup(SmodZ);
L:=List(L,x->PreImage(kappa,x));
return Filtered(L,P->(iscritical(S,P) <> -1));
fi;
end;
n:=2^7;
for i in [1..NumberSmallGroups(n)] do
S:=SmallGroup(n,i);
L:=criticalsubgroups(S);
Print(n," ",i,"\n");
od;
Some comments are in order: To simplify the timings I have left out the
code for the function iscritical, so the above program simply computes the
conjugacy classes of subgroups P containing Z(S) for all 2-groups S of
order 2^7. Moreover my original function does not return true/false but
rather -1 (=false), 0 (=undecided) and 1 (=true). For simplicity I have
left this in.
Unfortunaly even this simple program runs a factor of 2.7 slower than the
corresponding Magma program. Are there any ways to speed this up?
Another question: One of the conditions for criticality is that P is
centric in S, i.e. that C_S(P) is contained in P. Does anyone know any
better algorithm for computing all such subgroups than testing all
subgroups containing Z(S) one by one?
best wishes,
Kasper Andersen
More information about the Forum
mailing list