嗯,按照8字节对齐了。
c++11后,vector提供emplace_back方法,支持就地创建,拷贝、移动都不会发生。
不过这个函数直接接受构造函数的参数,不接受初始化列表,不发生隐式类型转换。
所以就有个小限制
m_records.push_back({
.bar_id = bar,
.trade_count = c,
.trade_price = price,
.total_count = rec0.total_count + c,
.total_cost = rec0.total_cost + c * price * (1 + fee),
.profit = 0,
.cash = rec0.cash - c * price * (1 + fee),
});
这样的用法就不能用了。如果要改成emplace_back,就只能按顺序提供参数,无法按照字段名称,不过问题也不大
m_records.emplace_back({
bar,
c,
price,
rec0.total_count + c,
rec0.total_cost + c * price * (1 + fee),
0,
rec0.cash - c * price * (1 + fee),
});
性能问题解决了,看着不太完美。
【 在 gfkid 的大作中提到: 】
: 感觉把字节对齐一下比较好
: 编译器很强大,也许不需要考虑那么多了,担心的话就把copy构造和copy赋值标记为delete。
--
FROM 223.72.40.*