在youtube剪辑Trading at light speed: designing low latency systems in C++ - David Gross - Meeting C++ 2022中,呈现了以下内容:
std::unordered_map<InstrumentId, Instrument> mInstruments;
// Upsides: Contiguous memory, cheap lookup
// Downsides: Random memory access ("Linked list")
std::vector<Instrument> mInstruments;
std::unordered_map<InstrumentId, Instrument*> mInstruments;
// Upsides: Contiguous memory, cheap lookup
// Downsides: expensive resize which invalidates pointers
为什么这是一个改进?不是还有一个链表,只是现在用指针代替了完整的对象吗?所以你仍然有随机内存访问?
1条答案
按热度按时间798qvoo81#
第二种设计允许您使用
for(Instrument &i : mInstruments)
在连续排序内存中的所有乐器上循环。