1

我是编程新手,正在学习麻省理工学院的 6.00。在观看动态编程讲座时,我想到了一个简单的问题:是否有任何内置功能(一般用于计算机)来检测重复性任务并进行补偿?

我意识到这很模糊。我正在使用我祖父的电脑,因为他一直抱怨它很慢。实际上,它一次最多会延迟 15 秒,等待程序打开等。当我升级 RAM 时,问题就消失了。因此,如果计算机经常不得不将页面输入和页面输出写入磁盘,为什么它不能弹出一条提示 RAM 升级的小消息呢?这样可以节省不少时间。

计算机擅长快速执行任务,但慢代码可能会很慢。这可以自动化吗?这甚至是一个合理的问题吗?

4

2 回答 2

0

在您描述的示例中,代码并不慢,因为它正在读取/写入磁盘。它很慢,因为它实际上并没有做任何事情,而是等待操作系统将页面输入和输出到磁盘。

此外,RAM 升级并不总是频繁分页的解决方案(比如错误程序泄漏内存或其他问题)。

从一般意义上说,操作系统实际上不可能检测到所有可能的问题并提出解决方案。这实际上是停机问题的一种变体。

于 2012-11-29T17:53:36.200 回答
0

一般来说,计算机不可能知道缓慢是因为它正在运行一项基本上需要很长时间才能完成的操作,还是因为它所花费的时间比实际需要的多。

此外,即使您已确定操作速度很慢,也更难以诊断出操作速度缓慢的确切原因。有时是因为您需要更多的 RAM,有时是因为网络速度慢、磁盘速度慢或 CPU 速度慢。如果检查器在运行它的同一台机器上运行,这将更加困难,因为它本身也遇到了缓慢的问题。

但是,在某些有限的情况下可以做几件事。许多流行的操作系统(例如 Windows、Linux、Android)可以检测到对用户输入的缓慢响应,并且会提供更多时间或强制关闭应用程序 (Android) 或以灰度 (Linux) 或淡蓝色绘制无响应窗口(Windows),如果应用程序在一定时间内未能响应用户输入。

于 2012-11-29T18:20:52.893 回答