Affiliation:
1. Massachusetts Institute of Technology, Cambridge
2. Univ. of Utah, Salt Lake City
Abstract
Dynamic code generation allows programmers to use run-time information in order to achieve performance and expressiveness superior to those of static code. The 'C(
Tick C
) language is a superset of ANSI C that supports efficient and high-level use of dynamic code generation. 'C provides dynamic code generation at the level of C expressions and statements and supports the composition of dynamic code at run time. These features enable programmers to add dynamic code generation to existing C code incrementally and to write important applications (such as “just-in-time” compilers) easily. The article presents many examples of how 'C can be used to solve practical problems. The tcc compiler is an efficient, portable, and freely available implementation of 'C. tcc allows programmers to trade dynamic compilation speed for dynamic code quality: in some aplications, it is most important to generate code quickly, while in others code quality matters more than compilation speed. The overhead of dynamic compilation is on the order of 100 to 600 cycles per generated instruction, depending on the level of dynamic optimizaton. Measurements show that the use of dynamic code generation can improve performance by almost an order of magnitude; two- to four-fold speedups are common. In most cases, the overhead of dynamic compilation is recovered in under 100 uses of the dynamic code; sometimes it can be recovered within one use.
Publisher
Association for Computing Machinery (ACM)
Reference37 articles.
1. Implementing remote procedure calls
2. BRIGGS P. AND HARVEY T. 1994. Multiplication by integer constants. http ://softlib. rice. edu/MSCP. BRIGGS P. AND HARVEY T. 1994. Multiplication by integer constants. http ://softlib. rice. edu/MSCP.
3. Register allocation via coloring;CHAITIN G. J.;Comput. Lang.,1981
Cited by
73 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Type-Based Gradual Typing Performance Optimization;Proceedings of the ACM on Programming Languages;2024-01-05
2. On-stack replacement for program generators and source-to-source compilers;Proceedings of the 20th ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences;2021-10-17
3. Comparison of different implementations of a raster map calculator;Computers & Geosciences;2021-09
4. A Survey of Metaprogramming Languages;ACM Computing Surveys;2020-11-30
5. Robust Practical Binary Optimization at Run-time using LLVM;2020 IEEE/ACM 6th Workshop on the LLVM Compiler Infrastructure in HPC (LLVM-HPC) and Workshop on Hierarchical Parallelism for Exascale Computing (HiPar);2020-11