Usually you  need not care about  the mechanism described in the previous
section.  You just call the  dispatcher functions like Size.  They will
call  the   function  in  the   operations   record,  which  is hopefully
implementing an algorithm that is well  suited for their domain, by using
the structure of this domain.
There are three reasons why you might want to avoid calling the dispatcher function and call the dispatched to function directly.
The first reason is efficiency.  The  dispatcher functions don't do very
much.   They   only check the types    of their arguments,  check  if the
requested information is already present, and dispatch to the appropriate
function in the  operations record.   But  sometimes, for example  in the
innermost loop of your algorithm, even this little is too much.  In those
cases you can avoid the overhead introduced by the dispatcher function by
calling the function in the operations record directly.  For example, you
would use G.operations.Size(G) instead of Size(G).
The second reason is flexibility.  Sometimes you do not want to call  the
function in the operations record, but another function that performs the
same task, using a different algorithm.  In that case you will  call this
different function.  For example, if G is a permutation group,  and the
orbit of p under G is very short, GroupOps.Orbit(G,p), which is
the  default function to compute an orbit, may be slightly more efficient
than Orbit(G,p), which calls G.operations.Orbit(G,p), which
is the same as PermGroupOps.Orbit(G,p).
The third has to do with the fact that the dispatcher functions check for
knowledge   components like D.size or   D.elements and also store
their result in such components.  For example,  suppose you know that the
result of a computation takes  up quite some space, as  is the case  with
Elements(D), and that  you will never  need the value again.  In this
case you would not want the dispatcher function to enter the value in the
domain  record, and therefore  would call  D.operations.Elements(D)
directly.  On  the other hand you  may not want  to use the  value in the
domain record, because you mistrust it.  In this case you should call the
function  in   the operations   record   directly,  e.g., you would   use
G.operations.Size(G) instead of  Size(G) (and  then compare the
result with G.size).
GAP 3.4.4