gap-packages / recog

The GAP package recog to collect methods for constructive recognition
https://gap-packages.github.io/recog/
GNU General Public License v3.0
6 stars 14 forks source link

Recognising SLs seems slow #242

Open ssiccha opened 3 years ago

ssiccha commented 3 years ago

@fingolfin and @danielrademacher mentioned this during a jitsi call: The call RecognizeGroup(SL(40,3)); takes pretty long. Once one knows the name of the group, doing the constructive recognition by RECOG.FindStdGens_SL(SL(40,3),GF(3)); is quick.

fingolfin commented 3 years ago

Even finding the name is reasonably fast. Next thing to test would be to see how slow/fast calling FindHomMethodsProjective.ClassicalNatural is (which calls RECOG.FindStdGens_SL among other things). And then of course one could run the profiler to see where else we spend/waste time.

danielrademacher commented 3 years ago

I have looked into this.

The function 'FindHomMethodsProjective.ClassicalNatural' was pretty fast. I summarise the lines which used a lot of time: 250ms: rifac := RecogniseGeneric( Group(List(GeneratorsOfGroup(H), x->ImageElm(Homom(ri),x))), methodsforfactor(ri), depth, forfactor(ri) );

200ms: Setpregensfac( ri, CalcNiceGens(rifac,ri!.gensHmem) );

1850ms:
succ := CallFuncList(methgensN.method, Concatenation([ri],methgensN.args));

These three lines are basically the bottlenecks for the call 'RecognizeGroup(SL(40,3));'