提交 3b6b0649 authored 作者: Virgile Andreani's avatar Virgile Andreani 提交者: Ricardo Vieira

Use a Counter in compiledir

上级 b4563c5b
...@@ -7,6 +7,7 @@ import logging ...@@ -7,6 +7,7 @@ import logging
import os import os
import pickle import pickle
import shutil import shutil
from collections import Counter
import numpy as np import numpy as np
...@@ -111,11 +112,11 @@ def print_compiledir_content(): ...@@ -111,11 +112,11 @@ def print_compiledir_content():
compiledir = config.compiledir compiledir = config.compiledir
table = [] table = []
table_multiple_ops = [] table_multiple_ops = []
table_op_class = {} table_op_class = Counter()
zeros_op = 0 zeros_op = 0
big_key_files = [] big_key_files = []
total_key_sizes = 0 total_key_sizes = 0
nb_keys = {} nb_keys = Counter()
for dir in os.listdir(compiledir): for dir in os.listdir(compiledir):
filename = os.path.join(compiledir, dir, "key.pkl") filename = os.path.join(compiledir, dir, "key.pkl")
if not os.path.exists(filename): if not os.path.exists(filename):
...@@ -125,9 +126,7 @@ def print_compiledir_content(): ...@@ -125,9 +126,7 @@ def print_compiledir_content():
keydata = pickle.load(file) keydata = pickle.load(file)
ops = list({x for x in flatten(keydata.keys) if isinstance(x, Op)}) ops = list({x for x in flatten(keydata.keys) if isinstance(x, Op)})
# Whatever the case, we count compilations for OP classes. # Whatever the case, we count compilations for OP classes.
for op_class in {op.__class__ for op in ops}: table_op_class.update({op.__class__ for op in ops})
table_op_class.setdefault(op_class, 0)
table_op_class[op_class] += 1
if len(ops) == 0: if len(ops) == 0:
zeros_op += 1 zeros_op += 1
else: else:
...@@ -159,7 +158,6 @@ def print_compiledir_content(): ...@@ -159,7 +158,6 @@ def print_compiledir_content():
if size > max_key_file_size: if size > max_key_file_size:
big_key_files.append((dir, size, ops)) big_key_files.append((dir, size, ops))
nb_keys.setdefault(len(keydata.keys), 0)
nb_keys[len(keydata.keys)] += 1 nb_keys[len(keydata.keys)] += 1
except OSError: except OSError:
pass pass
...@@ -198,8 +196,7 @@ def print_compiledir_content(): ...@@ -198,8 +196,7 @@ def print_compiledir_content():
), ),
underline="+", underline="+",
) )
table_op_class = sorted(table_op_class.items(), key=lambda t: t[1]) for op_class, nb in reversed(table_op_class.most_common()):
for op_class, nb in table_op_class:
print(op_class, nb) print(op_class, nb)
if big_key_files: if big_key_files:
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论