[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