• 请不要在回答技术问题时复制粘贴 AI 生成的内容
alwayshere
V2EX  ›  程序员

从计算机角度来推断,时间是不是就是空间?

  •  
  •   alwayshere · Nov 30, 2016 · 5134 views
    This topic created in 3468 days ago, the information mentioned may be changed or developed.

    这几天开发后端,感觉程序开发就是一种时间换取空间 or 空间换取时间的游戏,最简单的例子就是生成缓存,很多时候把需要耗时的结果存为缓存,这样减少了时间但增加了空间,自己有时的服务器够强悍, CPU 和带宽都是顶配,但硬盘是小容量的 SSD 固态硬盘,所以就不用生成缓存,每次直接输出结果就行了,所以突然就有这么一个想法:时间===空间,刚刚网上去查了查时间和空间的论断,看到一篇文章: http://www.zhibeifw.com/fjgc/fjykx_list.php?id=7465 (篇幅较长)感觉说的很好,大家觉得是不是这么一回事

    其实感觉计算机原理和宇宙都是相通的,比如知乎上一个回答: https://www.zhihu.com/question/20499013/answer/47162939

    24 replies    2016-12-01 13:58:40 +08:00
    xjtlujoe
        1
    xjtlujoe  
       Nov 30, 2016
    你是说能量守恒么?或者我的理解是羊毛出在羊身上。差不多的意思
    misaka19000
        2
    misaka19000  
       Nov 30, 2016
    这都什么和什么

    缓存的发明来自于局部性原理
    SoloCompany
        3
    SoloCompany  
       Nov 30, 2016
    当然不是
    你这理论和「只要有足够长的时间,一只狗可以在打字机上打出来一首莎士比亚的完整的诗歌」有什么区别
    再引申一下,随便一部电影,也能够在 pi 的若干 bit 上找到
    SoloCompany
        4
    SoloCompany  
       Nov 30, 2016
    SilentDepth
        5
    SilentDepth  
       Nov 30, 2016
    在计算机理论内的很多情况下,时间和空间是可以互换,但不能说「时间 === 空间」,甚至不能说「时间 == 空间」。楼主对程序开发的感觉(主题第一句)是对的,但由此还不能引申出这么大的理论来。另外最后一句,与其说「计算机原理和宇宙都是相通的」,不如说它们遵守的都是相同的规则,这两种理解在出发点上有点微妙的区别
    aitaii
        6
    aitaii  
       Nov 30, 2016
    按 规矩 来,如果人人或自然事物都遵守,就是 规律。
    q397064399
        7
    q397064399  
       Nov 30, 2016
    时间换空间不是绝对的,
    例如排序算法最优解就是 O(log n),你没办法通过空间来换取时间,因为这是信息论决定的
    oisc
        8
    oisc  
       Nov 30, 2016
    不要发明概念,时间就是时间。计算资源包括三种:并行时间、串行时间和空间三种.
    woostundy
        9
    woostundy  
       Nov 30, 2016
    @q397064399 非比较排序可以突破,比如桶排序或者计数排序。
    ryd994
        10
    ryd994  
       Nov 30, 2016 via Android
    恭喜楼主进入民科领域
    你是不是还没有考虑一个很重要的维度:钱
    很多时候我遇到的是:优化?优化啥?加钱上机器!你们几个人优化半个月,工资都够买机器了
    SlipStupig
        11
    SlipStupig  
       Nov 30, 2016
    @SoloCompany 啊哈, bozo 算法
    levn
        12
    levn  
       Nov 30, 2016
    “程序=算法+数据结构”
    lisp “代码即数据 数据即代码”
    “整个宇宙其实只有一个电子”
    deeporist
        13
    deeporist  
       Nov 30, 2016
    从宇宙的角度来看时间和空间都不存在
    Light3
        14
    Light3  
       Nov 30, 2016
    让我想起了昨天那个在地铁上看见的运维..
    那个运维说我在 ssd 装能比机械快百分之 60 的时间...
    意思大概是为什么公司不全上 ssd..
    metowolf
        15
    metowolf  
       Nov 30, 2016
    正所谓计算机学着学着就开始往玄学方面搞了
    arzusyume
        16
    arzusyume  
       Nov 30, 2016
    从北京到上海高铁要 4 小时,
    不意味着北京到上海距离和 4 小时的时间是等价的
    phoolean
        17
    phoolean  
       Nov 30, 2016
    当然不是,用多少缓存也无法将质因数分解问题的复杂度降到多项式级别
    itfanr
        18
    itfanr  
       Nov 30, 2016
    哲学问题
    polo2222
        19
    polo2222  
       Nov 30, 2016
    智障啊。。。。
    lx1510
        20
    lx1510  
       Nov 30, 2016
    @arzusyume 您大概没懂楼主的意思吧,比如您的例子,北京到上海,针对高铁这一种交通方式,铁路局收费可以按空间距离计算,其实也可以按照乘车时间的倒数计算(然而它没有,虽然停站少高铁自身运营成本可以更低,部分乘客也可以少浪费时间,但铁路局毕竟要照顾到空间上的客观存在的利益,把自身利润最大化),导致从北京到上海的这些人更倾向于买乘车时间短的车票。可以说,空间距离“等价”于乘车时间的倒数
    sgissb1
        21
    sgissb1  
       Nov 30, 2016
    没太看懂,文字表达可能太抽象。

    首先时间和空间不相等,也不能约等于,最多近似。因为 lz 你忽略了一个问题,生存缓存是加快时间,牺牲空间换时间没错,问题是如果不生成缓存,那么就能留住空间了吗?你提到的空间可能只是磁盘空间,而我说的空间是存储空间。

    缓存这玩意不仅仅可以放到磁盘上,还能放到内存上,当某查询业务并发量到达 W 级时,为了节约空间哥几个不生成缓存,那么空间和时间一同会浪费起来。因为每次数据的重新生成不仅仅是要 cpu 时间,还需要内存空间,当并发量达到一定时,你就会发祥时间和空间都没了。

    但如果在这个业务下,我们将缓存定时刷新,表面上浪费了一定的空间,但在较高的并发时,你会发现只是 cpu 读取同一份数据而已,不会占用其他太多余的空间。
    onesuper
        22
    onesuper  
       Dec 1, 2016
    计算机中的空间是某种信息量的物理存储(比特位的反转),时间则是计算出相应状态的 CPU cycle 数量。

    可以 trade one for another ,但不是等价关系
    nozama
        23
    nozama  
       Dec 1, 2016
    我也思考过这个问题。我觉得:是。

    @q397064399 假如用多线程来排序,某种角度上,就可以认为是“空间换时间”。用 cpu 的空间、 Ram 的空间 来换取宏观上的时间。
    cabing
        24
    cabing  
       Dec 1, 2016
    推荐阅读深入理解计算机原理
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   892 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 96ms · UTC 20:05 · PVG 04:05 · LAX 13:05 · JFK 16:05
    ♥ Do have faith in what you're doing.