可执行文件
编译程序
计算机科学
编码(集合论)
并行计算
优化编译器
转化(遗传学)
程序设计语言
规格#
维数(图论)
程序优化
还原(数学)
数学
组合数学
化学
几何学
基因
生物化学
集合(抽象数据类型)
作者
Anderson Faustino,Edson Borin,Fernando Magno Quintão Pereira,Otávio O. Napoli,Vanderson Martins do Rosário
标识
DOI:10.1145/3475061.3475085
摘要
Typical compilers provide users with default optimization levels: sequences of code-transformation passes that can be tuned to either generate faster or smaller executables. Regarding this last dimension of efficiency—size—clang contains two optimization levels: Os and Oz. Both cause the invocation of a large number of passes: 264 and 260, respectively. In this paper, we explore the following question: is it possible to find shorter sequences that deliver similar results? To provide an answer to such a question, we have compiled 15,000 different programs with 10,044 optimization sequences, each with up to 100 code-transformation passes. Promising sequences, once selected, were then systematically reduced. From this effort, we have chosen five optimization sequences containing from 12 to 15 code transformations. When applied onto SPEC CPU2017, these sequences yield compilation times that are 1.4 − 1.6 × and 1.3 − 1.5 × faster than the Os and Oz optimization levels of LLVM. Moreover, one of the selected sequences produced code that is 2.3% smaller than LLVM's Os level, and only 2.5% larger than the Oz level.
科研通智能强力驱动
Strongly Powered by AbleSci AI