0

创建 100 多个新对象时更快的是什么:

//initialization list
    struct struct_Obj {
    ...tonsOfVars
    struct_Obj() : tonsOfVars(init) {}
    }

或者:

//static const already constructed, call the copy constructor(?)
static const struct_Obj defaultStruct_Obj = { tonsOfVars(init) };
struct_Obj newObj = defaultStruct_Obj

TonsOfVars 意味着多个不同的变量(从 POD 到结构/类)

我会假设静态常量,因为它调用复制构造函数(意味着 1 个操作?)与调用初始化列表中的每个初始化器?
尽管对此的普遍反应是“分析它”,但即使这样做也无法解释为什么它更快。

4

2 回答 2

0

这实际上取决于tonsOfVars.

我会假设静态常量,因为它调用复制构造函数(意味着 1 个操作?)与调用初始化列表中的每个初始化器?

它正在为 调用一个复制构造函数struct_Obj,但它仍然需要为每个字段调用复制构造函数。

如果它们都是 POD 数据,则根本没有区别。但是,在某些类型中,默认构造函数可能比复制构造函数更快(或更慢),因此会有所不同。

于 2013-08-24T08:00:29.183 回答
0

我认为这取决于tonsOfVars的构造函数与tonsOfVars的复制构造函数的速度,如果它们都是编译器生成或进行浅拷贝,那么我想不出为什么初始化列表不快。

取决于 tonOfVars 是什么类型,编译器的优化也会有所不同。

于 2013-08-24T13:27:42.697 回答