动态内存分配会增加运行时间吗?
Does dynamic memory allocation increase runtime?
在竞争性编码网站上竞争时,我制定了一个实施 Tries 的解决方案。为此,我不得不在 运行 时间内动态分配堆内存。该解决方案无法被接受,因为它超过了 1 秒的时间限制 0.12 秒。在解决方案代码中,他们没有分配任何堆内存,而是使用数组来构建 Tries。此代码的 运行 时间约为 0.79 秒。可能是什么原因?
是的,可能是堆分配增加了开销 - 它也可能是您的算法。
参见示例。 Which is faster: Stack allocation or Heap allocation,有关堆分配成本的一些提示。
您通常可以通过一次分配一个对象池(并释放到池中而不是删除)而不是频繁地 malloc/new 来减少开销。这是众多技术中的一种。见例如。 https://msdn.microsoft.com/en-us/library/ms810466.aspx 对于其他一些人。
在竞争性编码网站上竞争时,我制定了一个实施 Tries 的解决方案。为此,我不得不在 运行 时间内动态分配堆内存。该解决方案无法被接受,因为它超过了 1 秒的时间限制 0.12 秒。在解决方案代码中,他们没有分配任何堆内存,而是使用数组来构建 Tries。此代码的 运行 时间约为 0.79 秒。可能是什么原因?
是的,可能是堆分配增加了开销 - 它也可能是您的算法。
参见示例。 Which is faster: Stack allocation or Heap allocation,有关堆分配成本的一些提示。
您通常可以通过一次分配一个对象池(并释放到池中而不是删除)而不是频繁地 malloc/new 来减少开销。这是众多技术中的一种。见例如。 https://msdn.microsoft.com/en-us/library/ms810466.aspx 对于其他一些人。