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

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

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

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

      Stack  Rub;

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

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

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

  • 相关阅读:
    嵌入式为什么要用Linux操作系统
    SPI 协议的理解
    跳转某指定地址、给某绝对地址赋值
    define 宏定义
    笔试--编程题
    spring 技巧集锦
    spring data jpa auditing
    spring security
    Python基础笔记
    调试EF源代码环境配置
  • 原文地址:https://www.cnblogs.com/ProtectedDream/p/4539280.html
Copyright © 2011-2022 走看看