我正在使用 Visual Studio 2010 构建一个小项目,该项目声明一个向量并为近 1500 条记录执行 push_back,其中包含 6 个字符串成员变量。通过传递硬编码在 cpp 文件中的字符串文字来创建 Employee 的实例。
示例代码:
struct Employee{
Employee(string && name, string && id, string && ssn, string && location, string && phone): name(move(name)), id(move(id)), ssn(move(ssn)), location(move(location)), phone(move(phone)){}
string name;
string id;
string ssn;
string location;
string phone;
};
int main (int argc, char *args[]){
vector<Employee> ec;
ec.push_back(Employee(string("Sam"), string("sam"), string("215559999"), string("Seattle"), string("2145482058")));
ec.push_back(Employee(string("Adams"), string("ada"), string("124558888"), string("Pittsburgh"), string("6545482058")));
/*push_back 1500 records*/
}
此代码在调试模式下编译和链接良好。在发布模式下,代码编译得很好,但链接需要很长时间。输出控制台的最后 2 行是
1>Link:
1> Generate code
PS:从“Maximize Speed /O2”的发布默认值禁用优化(属性> C / C ++>优化)解决了这个问题,但这不是我想要考虑的事情,除非真的没有其他办法。
编辑:文件 IO 不是我们喜欢的东西,因为它增加了进程的轻微延迟,特别是因为这段代码将同时在 100 多个作业中启动。因此,鉴于这是一个 30x4000 的静态表,我们缩小了内存表的范围,并避免了由于 io. 硬编码肯定会让代码看起来更像一个文本文件,但我们正在寻找性能。那么,Visual Studio 有什么方法可以接受字符串文字的硬编码,并快速链接它们。如果没有,我会回到我的文件 io 方法。