{'fraction_non_alphanumeric': 0.030104712041884817, 'fraction_numerical': 0.015706806282722512, 'mean_word_length': 5.0236220472440944, '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}}
The Common Case in Forth Programs

Identifying common features in Forth programs is important for those designing Forth machines and optimisers. In this paper we measure the behaviour of six large Forth programs and four small ones. We look at the ratio of user to system code, basic block lengths, common instructions, and common sequences of instructions. Our most important finding is that for most large programs, many (38.4%– 47.6% statically and 21.8%–40.9% dynamically) basic blocks consist of only a single instruction, which hinders optimisation. We also show static measures of frequent instructions and sequences of instructions are more consistent across programs, and may be a better predictor of the behaviour of other programs than dynamic measures.