初始化包含约 7000 个元素的容器时编译速度慢

A.B*_*.B. 5 c++ visual-studio-2013

我的源文件中有以下内容:

const std::vector<std::vector<UChar32>> table = {
    { 0x1234, 0xabcd },
    { 0x5678, 0xef01, 0xfe21},
    // ~7000 more elements omitted
};
Run Code Online (Sandbox Code Playgroud)

Visual Studio 2013 的编译时间非常慢(我在 i7-2600 上等待了 30 分钟才中止)。有什么方法可以加快速度吗?

编辑:我应该补充一点,这个源文件仅包含这个定义,以及必要的包含。UChar32 只是 std::int32_t 的类型定义。

Tho*_*ews 0

如果数据是常量,由编译器初始化并且不被程序更改,那么使用数组会更好。

此外,数据应该位于单独的翻译单元中,因此不经常编译。

这是嵌入式系统中用于编译固定数据(例如位图字体或语言翻译表)的常用技术。

当你声明数组时,声明它不带大小并且声明为“static const”,这样它在使用时就不会被压入堆栈。