管理你的内存

  事情的起因是POJ上一道数据量比较大的题目。一开始我TLE,而算法是O(n)的,具体的题目记不太起来了。

  后来我通过一个小技巧来改进了程序的常数因子,就是与内存分配与释放有关,事实证明,计算机寻找可用的内存是需要一定的时间的,而当数据量变得很大,并且你不得不每次重新申请内存的时候,这花费的时间久相当可怕。这时候你完全可以利用一个垃圾回收机制,来节约内存分配的时间。

  这个回收机制可以用很多数据结构来实现,我当时采用的是一个栈,类似于:

  Stack  Rub;

  每次我需要申请新内存的时候,首先检查栈是否为空(即里面是否有现成的内存可供分配),内存生命周期结束后,不free,而是入栈。

  结果是,从TLE优化到100ms.

  有兴趣的朋友可以自行实验,写一个简单的for循环就可以知道大概每次内存分配的期望值(因为这与具体的内存状态有关)。

posted on 2015-05-29 19:15  coderlt  阅读(201)  评论(0编辑  收藏  举报

导航