将pypy实现转换为c文件并在现代笔记本上构建pypy-c需要数小时,其中包含2G内存和Intel Core2 2GHz CPU。
我知道这是一项cpu密集型任务,但是它必须这么慢吗?是否有机会或空间来减少计算,重新安排计算顺序并将时间缩短到几十分钟?
答案 0 :(得分:12)
免责声明:我不是PyPy的专家 - 特别是,我不了解RPython翻译的细节,我只是引用docs以及在邮件列表和博客中偷听的内容
“CPU密集型任务”?被提名为本月的轻描淡写。我自己并不太了解翻译过程的细节,但即使我可以告诉你,它的每一个分析和优化过程都会对很多代码进行大量非常复杂的工作。
gcc -O2
或类似代码编译的,当然需要进行大量的解析和检查,并且本身会有很多分析和优化过程。所以是的,这是一个非常令人毛骨悚然的巨大任务。难怪你失去了微不足道的CPU。作为参考,PyPy人员在benchmarking the translation process in November 2010时使用了英特尔至强W3580(3.33 GHz)。它仍然需要大约76分钟,即使它们还有12 GB的RAM - 这导致了下一个问题:在此过程中需要大量的RAM(当时64位Ubuntu上为2.3 GB) ,不知道数字如何转化为你的情况)。我很确定你最终会超过你的物理内存 - 进入过多的交换和相关的性能腹股沟。
再加上你可能有其他几个程序正在运行窃取CPU时间和内存的事实,我认为你的经验相当不错。翻译PyPy是为更强大的计算机保留的。如果有一些东西可以从根本上改善这些时间,像我们这样的局外人不太可能找到它。我会把这些烦恼留给开发者。