![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /proc/thread-self/root/usr/lib/llvm-10/share/opt-viewer/ |
Upload File : |
#!/usr/bin/env python3 from __future__ import print_function desc = '''Generate statistics about optimization records from the YAML files generated with -fsave-optimization-record and -fdiagnostics-show-hotness. The tools requires PyYAML and Pygments Python packages.''' import optrecord import argparse import operator from collections import defaultdict from multiprocessing import cpu_count, Pool try: from guppy import hpy hp = hpy() except ImportError: print("Memory consumption not shown because guppy is not installed") hp = None if __name__ == '__main__': parser = argparse.ArgumentParser(description=desc) parser.add_argument( 'yaml_dirs_or_files', nargs='+', help='List of optimization record files or directories searched ' 'for optimization record files.') parser.add_argument( '--jobs', '-j', default=None, type=int, help='Max job count (defaults to %(default)s, the current CPU count)') parser.add_argument( '--no-progress-indicator', '-n', action='store_true', default=False, help='Do not display any indicator of how many YAML files were read.') args = parser.parse_args() print_progress = not args.no_progress_indicator files = optrecord.find_opt_files(*args.yaml_dirs_or_files) if not files: parser.error("No *.opt.yaml files found") sys.exit(1) all_remarks, file_remarks, _ = optrecord.gather_results( files, args.jobs, print_progress) if print_progress: print('\n') bypass = defaultdict(int) byname = defaultdict(int) for r in optrecord.itervalues(all_remarks): bypass[r.Pass] += 1 byname[r.Pass + "/" + r.Name] += 1 total = len(all_remarks) print("{:24s} {:10d}".format("Total number of remarks", total)) if hp: h = hp.heap() print("{:24s} {:10d}".format("Memory per remark", h.size / len(all_remarks))) print('\n') print("Top 10 remarks by pass:") for (passname, count) in sorted(bypass.items(), key=operator.itemgetter(1), reverse=True)[:10]: print(" {:30s} {:2.0f}%". format(passname, count * 100. / total)) print("\nTop 10 remarks:") for (name, count) in sorted(byname.items(), key=operator.itemgetter(1), reverse=True)[:10]: print(" {:30s} {:2.0f}%". format(name, count * 100. / total))