编译器可以为你生成高性能的代码,但是你真的需要编译器吗?

时间:2022-05-19 23:06:23 阅读: 最新文章 文档下载
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。


编译器可以为你生成高性能的代码,但是你真的需要编译器吗?

编译的目的是将源码转化为机器可识别的可执行程序,在早期,每次编译都

需要重新构建所有东西, 后来人们意识到可以让编译器自动完成一些工作, 从而提升编译效率。



但“编译器不过是用于代码生成的软机器,你可以使用你想要的任何语言来生成代码” ,真的是必要的吗?



诚然,编译器可以为你生成高性能的代码,但是你真的需要编译器吗?另一种方法是用



Assembly 编写程序,虽然有点夸大,但这种方法有两个主要缺陷: 1. 汇编代码不可移植;

2. 虽然在现代工具的辅助下变得容易了些,但 Assembly 编程仍然需要大量繁琐的工作。值得庆幸的是,我们都生活在二十一世纪,这两个问题都已得到解决。第一个解决方案

LLVM ,最初,它意味着“低级虚拟机” ,这正是我们可以确保可移植性的原因。简而言之,它需要用一些非常低级别的与硬件无关语言编写的代码,并为特定的硬件平台返回

一些高度优化的原生代码。 使用 LLVM ,我们既具有低级编程的强大功能, 又具有面向硬



件微优化的自动化功能。

第二个问题的解决方法是使用“脚本”语言, 都可以消除繁琐的工作。 实验计划

首先,让我们生成一个完全内联展开的解决方案,并将其嵌入到基准测试代码中。该计划 如下:

1. 使用 Clang 为基准生成 数;

2. 使 Python LLVM 中生成线性求解器( linear solver)代码;



SchemePythonPerl,甚至 bash AWK

LLVM 中间代码, 该基准用于测量 solve_5,一个不存在的函

3. 使用 Python 脚本测试基准,用生成求解器替换 solve_5 调用;


本文来源:https://www.wddqw.com/doc/e81abea731687e21af45b307e87101f69f31fb64.html