在我们的应用程序中,我们有一个生成字符的类,还有一个使用它们的类。当前的实现在字符产生时动态分配字符(使用new
)并在使用时删除它们(使用delete
)。这一切都非常缓慢,我正在寻找替换该实现以提高其性能的方法。
我需要的语义是标准类的语义queue
:在前面推,在后面弹出。默认实现使用deque
IIRC。deque
通常使用“块”或“块”内存来实现,因此我希望对 OS 内存分配器的调用要少得多,并且可以显着加快速度,而几乎没有额外的内存使用。
但是,由于排队的数据是字符(可能是宽字符),因此另一种方法是使用标准输入/输出流类,即字符流stringstream
。AFAIK,他们的行为也像队列一样。
有没有更好的先验选择?这两个类会有相似的分配模式吗?我可以尝试衡量两者的性能,但也许这并不重要,任何一个都足够好。在这种情况下,哪个最容易/最安全?
次要问题是生产者和消费者之间的并发性。我可以限制访问是顺序的(在同一个线程上),但是线程安全的实现可能对当前的多核硬件在性能方面是有益的。
在我深入研究并开始编码之前,感谢您的智慧。