还记得过去的美好时光,因为打开一个简单的文档或网页非常缓慢,因为它占用了计算机的所有微薄资源?而如今,尽管您的处理器速度提高了数百倍,并且可以访问数千倍的内存,但是这样做的速度甚至还要慢?
为了模拟当前文档查看器和类似应用程序中的膨胀效果,编写一个程序,使其在功能更强大的计算机上运行时会出现明显的性能问题。
要使每个人都有共同的任务,请使其成为质数生成器。
- 该程序必须打印从2开始的连续素数,每个素数都换行。它应该永远这样做(或直到内存用完)。像这样:
2 3 5 7 11 13 17
在打印每行之间应该有足够的延迟,以使人类可以察觉到。
随着运行程序的计算机变得更快,此延迟应更长。机器速度越快,程序速度越慢。
我不会指定确切的基准,因为它可能会变得很主观,但是如果两台不同机器的性能之间存在显着差异,那么在两台不同机器上的速度应该存在可察觉的差异。
在创建的所有现有机器上,程序的速度不必单调降低。这将很难指定,甚至难以验证。我相信参赛者的常识是什么可以被认为是机器之间明显不同的性能,足以满足要求。
我也不会指定确切的时间上限或下限,但是应该在合理的范围内,因此请不要在打印两行之间间隔几天或几年。
从Eniac到现代,我都不会要求它运行,但是应该足够通用,例如,不允许它仅在两种特定的CPU类型上运行,并且专门检测一种特定的CPU名称。在其上将运行得更快或更慢。
该代码不应依赖编译器或解释器版本。如果在一台速度越来越慢的计算机上都安装了相同版本的编译器/解释器,或者即使二进制/字节码是在一台计算机上编译然后在两台不同的计算机上运行,它也应该可以工作。
请解释程序运行方式的原理。由于将难以再现结果,因此答案的有效性可能取决于该方法的可行性。
虽然我希望它能成为一场次比赛,但遗憾的是,此站点不再是“ Programming Puzzles&Code Golf”,而只是“ Code Golf”,因此最短的代码为准。