zoukankan      html  css  js  c++  java
  • 管理你的内存

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

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

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

      Stack  Rub;

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

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

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

  • 相关阅读:
    GDUFE ACM-1093
    GDUFE ACM-1088
    GDUFE ACM-1069
    GDUFE ACM-1051
    GDUFE ACM-1049
    GDUFE ACM-1046
    GDUFE ACM-1045
    GDUFE ACM-1043
    OpenCV学习(7.12)
    OpenCV学习(7.11)
  • 原文地址:https://www.cnblogs.com/ProtectedDream/p/4539280.html
Copyright © 2011-2022 走看看