我正在尝试找到获取 C 源文件的完整预处理源代码(我不需要#line 信息其他注释,只需要原始源代码)的最快方法。
我有以下仅包含 Windows 头文件 ( mini.c
) 的小测试程序:
#include <windows.h>
然后,我使用 Microsoft Visual Studio 2005 运行以下命令:
cl /nologo /P mini.c
生成一个 2.5MB 的 mini.i 文件需要 6 秒;将其更改为
cl /nologo /EP mini.c > mini.i
(跳过注释和#line 信息)只需 0.5 秒即可写入 2.1MB 的输出。
有没有人知道在不使用预编译头文件的情况下进一步改进这一点的好技术?
我问的原因是我为 MSVC 编写了流行的ccache工具的变体。作为工作的一部分,程序需要计算预处理源代码(和其他一些东西)的哈希和。我想尽可能快地做到这一点。
也许有可用的专用预处理器二进制文件,或其他可能有帮助的命令行开关?
更新:我刚刚想到的一个想法:定义WIN32_LEAN_AND_MEAN宏以去除许多很少需要的代码。这将上述预处理器的运行速度提高了大约 3 倍。