zoukankan      html  css  js  c++  java
  • 算法的时间空间转换

    算法的好坏有两个指标:需要的内存空间(可以 理解为运行代码需要的内存空间),代码运行的时间(可以简单的理解为代码需要执行的步数)

    对于时空转化也是代码优化的重要思想:
    程序的设计要不就是时间换空间,要不就是用空间去换时间。并且时间和空间是可以进行相互转化的:对于执行的慢的程序,可以通过消耗内存(即构造新的数据结构)来进行优化。而消耗内存的程序,也可以多消耗时间来降低内存的消耗。

    下面举个简单的例子:比如要写一个两个值互换的算法

    //时间换空间
    //2块内存,3次赋值运算
    int a = 5;
    int b = 10;
    a = a+b;//得到a值为15
    b = a-b;//得到b值为5
    a = a-b;//得到a值为10
     
    //空间换时间
    //3块内存,2次赋值运算
    int c = 5;
    int d = 10;
    int e = c;//得到e为5
    c= d;//得到c值为10
    d = e;//得到d值为
    
    结论:第一个a和b互换值的算法:总共进行了3次加减运算和三次赋值运算,能够把a和b的值进行互换,没有开辟多余的内存空间。c和d互换的时候,多开辟了一个内存空间存储e,但是这样只需要进行三次赋值运算就可以把c和d的值进行互换。
    所以第一个算法空间效率高,时间效率低,第二个算法空间效率低,时间效率高,
    

    时间换空间:在程序当中,请求分页(锁页----pin-memory和分页相对),请求分段。
    空间换时间:

    • 在项目当中使用各种缓存技术.
    • cv中的img2col矩阵乘法实现

    分页:(充分利用虚拟内存)一种操作系统里存储器管理的一种技术,可以使电脑的主存可以使用存储在辅助存储器中的数据。操作系统会将辅助存储器(通常是磁盘)中的数据分区成固定大小的区块,称为“页”(pages)。
    当不需要时,将分页由主存(通常是内存)移到辅助存储器;当需要时,再将数据取回,加载主存中。相对于分段,分页允许存储器存储于不连续的区块以维持文件系统的整齐

  • 相关阅读:
    Python爬取中国疫情的实时数据
    文件上传
    条件查询和分页(第三周)
    全国疫情可视化图表
    Jquery的Ajax技术(第二周)
    软件工程开课博客
    求一个整数数组、环形数组中最大子数组的和
    今日所学—Android中ViewPager的使用
    今日所学—Android中ExpandableListView的使用
    你看,蚂蚁金服都上市了,程序员什么时候才能财富自由呢?
  • 原文地址:https://www.cnblogs.com/Henry-ZHAO/p/13251416.html
Copyright © 2011-2022 走看看