编译型语言如C
消耗的内存较少。
解释型语言如Python
消耗的内存较多,这是可以理解的。
使用JIT技术,程序在运行时会被(有选择地)编译成机器代码。那么,JIT编译后的程序的内存消耗不应该介于编译型和解释型之间吗?
然而,JIT编译的程序(如PyPy
)比等效的解释型程序(如Python
)消耗的内存要多几倍。为什么呢?
编译型语言如C
消耗的内存较少。
解释型语言如Python
消耗的内存较多,这是可以理解的。
使用JIT技术,程序在运行时会被(有选择地)编译成机器代码。那么,JIT编译后的程序的内存消耗不应该介于编译型和解释型之间吗?
然而,JIT编译的程序(如PyPy
)比等效的解释型程序(如Python
)消耗的内存要多几倍。为什么呢?
__slots__
相当。请参见http://morepypy.blogspot.com.au/2010/11/efficiently-implementing-python-objects.html。在某些情况下,这是非常显着的内存节省。他们还有其他的空间优化。我不知道整个真实程序的总体内存使用情况如何与CPython相比,但至少对于图片的某些部分,PyPy是“那么好”。因此,“我不会感到惊讶……”,而不是“PyPy绝对使用更少的内存”。 - Ben