我目前正在编写MMO服务器。 我现在为传入数据包分配了动态内存(首先读取8字节标头,在为Packet API类分配主体和读取主体的内存之后)。 但我听说动态内存分配很慢。 现在,我应该继续使用动态内存分配(我使用boost asio async执行读/写操作)还是应该将其转换为固定大小? 在我的模型中使用的最大数据包大小是5824字节,我不这么认为使用具有该值的静态缓冲区将是好的。 感谢。
答案 0 :(得分:0)
在现实世界中,动态分配比自动分配慢。这是真的 - 至少在一般情况下。
这并不意味着动态分配太慢。确定这一点的唯一方法是分析您的代码。在你做完之前,不可能说你应该放弃动态分配,因为它太慢了。
这并不是说您选择使用动态分配是正确的选择。 。除了性能之外还有其他原因,为什么动态分配通常是最好的保留。在理解设计之前,您应该了解内存分配的性质,以特定方式分配内存的原因以及各自的优缺点。
在C ++中,默认分配方法通常应该是自动分配,直到您有理由使用其他方法。
在你的问题中有很多“我听到了这个”和“我不这么认为”。软件工程不是猜测和谣言。这是关于严谨和逻辑的。测试你的代码。找出瓶颈。修复您了解的问题。