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)