File: operdebug.g

package info (click to toggle)
gap 4.15.1-1
  • links: PTS
  • area: main
  • in suites: forky, sid
  • size: 110,212 kB
  • sloc: ansic: 97,261; xml: 48,343; cpp: 13,946; sh: 4,900; perl: 1,650; javascript: 255; makefile: 252; ruby: 9
file content (66 lines) | stat: -rw-r--r-- 2,124 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#############################################################################
##
##  This file is part of GAP, a system for computational discrete algebra.
##  This file's authors include Frank Lübeck.
##
##  Copyright of GAP belongs to its developers, whose names are too numerous
##  to list here. Please refer to the COPYRIGHT file for details.
##
##  SPDX-License-Identifier: GPL-2.0-or-later
##
##  Undocumented  utilities to  write out  infos  about all  methods of  all
##  operations with  location and rank, and  to write out all  filters by name
##  and their rank. These can be useful to debug larger changes that influence
##  the ranking of filters and methods.
##

# prints lines of format
#   name of operation;nr of args;filename:line (of method installation);rank
BIND_GLOBAL("WriteMethodOverview", function(fname)
  local relname, f;
  relname := function(path)
    local ls, s;
    for s in GAPInfo.RootPaths do
      ls := Length(s);
      if Length(path) >= ls and path{[1..ls]}=s then
        return path{[ls+1..Length(path)]};
      fi;
    od;
    return path;
  end;
  f := function()
    local op, nam, i, ms, m, str;
    str := OutputTextFile(fname, false);
    for op in OPERATIONS do
      nam := NameFunction(op);
      for i in [0..6] do
        ms := MethodsOperation(op, i);
        for m in ms do
          PrintTo(str, nam,";\c",i,";",
                       relname(m.location[1]),":",m.location[2],";\c",
                       m.rank,"\n");
        od;
      od;
    od;
    CloseStream(str);
  end;
  f();
end);

# prints file with lines of format
#   filter name (with some abbreviations);rank
BIND_GLOBAL("WriteFilterRanks", function(fname)
  local nams, rks, n, i, str;
  str := OutputTextFile(fname, false);
  nams := List(FILTERS, NameFunction);
  rks := List(FILTERS, RankFilter);
  SortParallel(nams, rks);
  for i in [1..Length(nams)] do
    n := ReplacedString(nams[i],"CategoryCollections","CC");
    if Length(n) > 75 then
      n := Concatenation(n{[1..30]},"...",n{[Length(n)-29..Length(n)]});
    fi;
    PrintTo(str, n,";",rks[i],"\n");
  od;
  CloseStream(str);
end);