Source code for llvm_ir_dataset_utils.tools.top_x_constants
"""Tool for getting the top x constants from a constant frequency histogram."""
import logging
from absl import app
from absl import flags
FLAGS = flags.FLAGS
flags.DEFINE_string('constant_histogram_file', None,
'The path to the constant histogram CSV file.')
flags.DEFINE_string('output_file', None, 'The path to the output file.')
flags.DEFINE_integer('constant_count', None,
'The number of constants to pull from the histogram.')
flags.mark_flag_as_required('constant_histogram_file')
flags.mark_flag_as_required('output_file')
flags.mark_flag_as_required('constant_count')
[docs]def main(_):
constants = []
with open(FLAGS.constant_histogram_file) as constant_histogram_file:
for line in constant_histogram_file:
line_stripped = line.rstrip()
line_parts = line_stripped.split(',')
constants.append((int(line_parts[0]), int(line_parts[1])))
constants.sort(key=lambda const: const[1], reverse=True)
with open(FLAGS.output_file, 'w') as output_file:
for constant in constants[0:FLAGS.constant_count]:
output_file.write(f'{constant[0]}\n')
if __name__ == '__main__':
app.run(main)