我是编程新手,学习麻省理工学院的6.00。在观看动态编程课程时,我想到了一个简单的问题:有没有任何内置功能(适用于一般计算机)可以检测重复任务并进行补偿?
我意识到这很模糊。我在用爷爷的电脑,因为他一直抱怨电脑太慢。事实上,它一次会延迟15秒,等待程序打开等等。当我升级RAM时,问题就消失了。所以,如果计算机一直必须将页面输入和页面输出写入磁盘,为什么它不能弹出一条建议升级RAM的小消息呢?那样可以节省不少时间。
计算机擅长快速执行任务,但慢代码可能很慢。这能自动化吗?这是一个合理的问题吗?
在您描述的示例中,代码并不慢,因为它正在读/写磁盘。它很慢,因为它实际上什么都没做,而是在等待操作系统分页到磁盘。
此外,RAM升级并不总是频繁分页的解决方案(比如有缺陷的程序泄漏内存之类的)。
从一般意义上讲,操作系统不可能检测到所有可能的问题并提出解决方案。事实上,这是暂停问题的一个变体。
通常情况下,计算机不可能知道速度慢是因为它运行的操作基本上需要很长时间才能完成,还是需要比实际时间更长的时间。
此外,即使你已经发现手术速度慢,也更难诊断出手术速度慢的确切原因。有时是因为您需要更多的RAM,有时是因为网络速度慢、磁盘速度慢或CPU速度慢。如果检查器在其运行的同一台机器内运行,这将更加困难,因为它本身也会经历缓慢。
然而,在某些有限的情况下,有几件事是可以做的。许多流行的操作系统(如Windows、Linux、Android)可以检测到对用户输入的缓慢响应,如果应用程序在特定时间段内未能对用户输入做出响应,则会提供更多时间或强制关闭应用程序(Android),或以灰度(Linux)或蓝色(Windows)绘制未响应窗口。