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

2016-11-30 09:35:41 +08:00
 alwayshere

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

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

4262 次点击
所在节点    程序员
24 条回复
sgissb1
2016-11-30 20:57:26 +08:00
没太看懂,文字表达可能太抽象。

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

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

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

可以 trade one for another ,但不是等价关系
nozama
2016-12-01 11:24:54 +08:00
我也思考过这个问题。我觉得:是。

@q397064399 假如用多线程来排序,某种角度上,就可以认为是“空间换时间”。用 cpu 的空间、 Ram 的空间 来换取宏观上的时间。
cabing
2016-12-01 13:58:40 +08:00
推荐阅读深入理解计算机原理

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/324256

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX