{'fraction_non_alphanumeric': 0.013402061855670102, 'fraction_numerical': 0.0, 'mean_word_length': 5.3881578947368425, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Comparing and Combining Profiles

How much do two profiles of the same program differ? When has a profile changed enough to warrant reexamination of the profiled program? And how should two or more profiles be combined to make a better hybrid profile? To answer these questions, we borrow concepts from information theory that measure the differences between the distributions of random variables. Treating the distribution of execution frequencies in a profile like the distribution of a random variable lets us use metrics of difference between distributions and induces a mathematically well-founded way to combine distributions. For concreteness, we report results based on branch profiles, but our algorithms apply to any frequency-based profiling method. Our metric agrees in character with prior metrics while allowing us to adjust the relative importance of coverage and conflict issues. Our hybrid distributions do better than previous profile blending methods.