Visual Studio C 枚举需要很长时间来编译
Visual Studio C++ enum takes a long time to compile
我有一个带有枚举(和许多其他因素)
的DLLenum class KIT_API VoxelTypes : uint16_t
{
... about a hundred entries ...
ModellingClay_00 = 65406,
... more entries ...
ModellingClay_128,
COUNT
};
元素计数的值为65535。在"生成代码"阶段,我一直在编译超过45分钟。如果我将ModellingClay_00设置为10000,则在大约5-10分钟内进行编译。15000似乎需要更长的时间,但最终确实编译了。
有什么理由要简单地从更改其包含的值来编译的枚举应该花费更长的时间?
我很确定,我已经不愿意为我的个人折磨而进行内心的视觉工作室。谁能指出我已经做过的明显的事情,甚至以前听说过?
angew的分析是正确的。
有一系列静态的voxeltypes ::计数元素。每个元素为88个字节,总计5,767,168(5.5 MB)。
我的工作是创建一系列动态数组,而不是使用庞大的数组初始化器表。
旧:
static Elements whoppingBigTable[] = {
{Item1, 1, 1},
{Item2, 2, 2},
};
新:
static Elements* whoppingBigTable[64];
for(int i = 0; i < 64; i++)
{
whoppingBigTable = new Elements[1024];
}
AddElement({Item1, 1, 1});
AddElement({Item2, 2, 2});
还必须添加一些数学功能才能访问数组元素。我认为这是最快的方法。它包含我的体素的定义,因此我需要经常访问它。(我想我还可以为每个体素属性定义单独的数组,并且这些数组可能足够小以至于可以编译。这甚至比将所有属性放入一个巨型数组中更快)
)const Element& GetWhoppingElement(int index)
{
int majorIndex = index / 1024;
int minorIndex = index % 1024;
return whoppingBigTable[majorIndex][minorIndex];
}
相关文章:
- 使用Boost Interprocess创建托管共享内存需要很长时间
- SFML RenderWindow打开窗口需要很长时间
- Kafka C++客户端需要很长时间才能收到消息
- 给定使用 C++ 或 C,我如何测量在 linux 下进行线程切换需要多长时间?可能吗?
- asio::read() 需要很长时间,使用 asio::write 没有问题
- 将线程锁定很长时间
- 正在等待在非阻塞文件描述符上长时间运行ioctl
- 即使长时间等待,C++线程也不会加入
- 连接() 在连接被拒绝时长时间挂起
- 为什么这段代码需要这么长时间才能用 g++ 编译?
- 如何在长时间运行的方法中等待信号?
- 编译我的C++代码需要很长时间
- Visual Studio C 枚举需要很长时间来编译
- 为什么编译超过100000行std::vector::push_back需要很长时间
- C++程序需要很长时间才能在Mac OSX终端上编译
- 在VS2010中编译需要太长时间
- 为什么我的简单cpp-netlib程序需要这么长时间才能编译
- 使用boost库编译预编译头文件需要很长时间
- 如果包括"assert.h"的每个文件都需要很长的编译时间吗?
- 有时VS2008需要很长时间才能编译