Re: [闲聊] 游戏玩太久会卡的原因

楼主: kirimaru73 (雾丸)   2024-05-02 12:41:36
用图书馆来比喻电脑/手机程式
储存空间(硬盘、记忆卡)中的资料就是书架上面的书
如果你有事要在图书馆处理,那这些书中应该会有你需要的资料
但是一般情况下,你没办法直接在书架上面看书
所以你会申请一个阅读用的座位(内存)
把你需要的书拿到座位上(把硬盘中的资料移动到内存中)
然后就在你的座位上把事情办完(执行程式)
并在不需要这些资源后把书和座位归还回去
不过这里和现实有点差别,储存空间中的资料其实算是复制一份到内存中的
也就是已经被你借到座位上的书,其他人其实也可以借
那我们就假设这些书都是魔法书,你借走之后书架上会自动出现副本好了
反正书架上会发生的事情并不是这个比喻的重点
(你把书随意涂改害到别人这件事也先不提,这是另外一方面的问题)
如果你要执行的是复杂的大型工作,需要的书可能有上百本
那你就会申请一大片座位,把一大堆接下来可能要用的书都先借过来
某本书你如果刚查阅完,但是在可预见的未来还会使用,你也不会想先还回去
复杂的现代游戏都是这种规模的工作,才能放入一堆吸引人的要素
再仔细一点来说,整个工作过程应该会像这样:
(1) 申请一大片相邻的座位,借一百本书放好,开始工作
(2) 有新的需求,再申请一小片相邻的座位,借五十本书放好,执行需要的任务
(3) 这三十本书应该不需要了,先把它们还回去,并退掉对应的座位
(4) 又有新的需求,再申请一小片相邻的座位,借五十本书......
...
(N) 所有任务完成,归还手上所有的书和座位,离开图书馆
到这里为止,其实还看不出问题
如果所有程式都都正常地运作,那理应不会有越来越慢的毛病
只是当太多个大型程式一起跑时,会超出整个系统负荷的上限而已
哪些情况会出问题?最常见的就是应该还的书没有还
前面提过,书架上的书都会自动出现副本,所以不是别人借不到的问题
问题是你把书摆在你申请的座位上,座位上还有东西,无法让给其他人使用
应该要还的书没有还的理由可能有这些:
1. 我就是习惯不好,只关心我自己的工作,没在管应不应该还
2. 我知道要还,我也以为我有还,但是不知为何我没有还
3. 我因为一些严重理由被赶出图书馆了,工作人员不知为何没有清出我用过的位置
当座位被这些没有还的书占据时,前面提过申请“相邻座位”的行为就会变得困难
如果你真的需要五个座位来工作,正常人都会想要五个位置相邻吧?
要是图书馆给你安排相差很远的3+2个座位,你工作又非做不可
那过程想必会十分辛苦,这个概念即使在电子程式中也是相同的
除了工作进行时会累死人以外,光是要把五个座位才够放的书分散放好就很麻烦了
而复杂的程式中“有新的任务,需要额外申请座位和借书”的次数又相当频繁
时间一长,再搭配上“为什么没有还书”的鬼故事,需要的座位就会越来越分散
而程式又没有人类的感情,当座位分散到已经无法容忍时,它还是会老实执行任务
所以看似同样的重复任务,效率就会变得越来越低下
当座位已经确定不够了,需要这些座位才能运作的程式可能就会崩溃了
然而,经由被拷打的工程师所拷打而成的专业程式,可能会具有比较强的心理素质
即使面对明显不足的资源,他们仍会被要求用自己的能力极限去完成工作
这时候就会出现各种不可预期的灵异现象,甚至在工作时打翻其他人座位上的咖啡
好,讲出问题的原因了,那接下来应该要探讨怎么去解决这个问题
“需要用的书只要用完了就要马上还”,这是非常合理且容易理解的观念
任何正经的程式设计课程,以及具一定规模的工程师团队,都会再三强调这个好习惯
许多企业甚至会要求写过的程式码必须让另一个工程师检查过
部分明显的错误或是新人的坏习惯,确实用肉眼就可以抓出并要求改正
(这不是理想世界,这是现实,真的有这种机制,而且在大型企业中很常见)
然后为什么不还书的问题应该已经困扰了人类50年以上,我自己则差不多有15年
明明就是小学生都能理解的好习惯,为什么一天到晚就有人要违反呢?
作者: farseer7 (FS)   2024-05-02 12:44:00
这篇好好理解
作者: Hosimati (星咏み)   2024-05-02 12:46:00
阿就懒得还呀,搞不好明天就会用到
作者: marx93521 (<阿ㄉ一ㄥˋ>)   2024-05-02 12:47:00
我还了啊 只是不知道为什么还在位子上
作者: tw15 (巴拉巴拉)   2024-05-02 12:51:00
我要走了 我拿了书 我还了书 柜台接过了书 但书还在座位上电子逻辑

Links booklink

Contact Us: admin [ a t ] ucptt.com