Python 这是pypy的一个用例吗?

Python 这是pypy的一个用例吗?,python,pypy,Python,Pypy,我正在开发一个应用程序,其中包含一些嵌套的不可矢量化代码循环。有一组大约50个函数被调用数百次或数千次。这些函数接收字典并传回字典。每个函数都很短,每个函数都有简单的数字代码,因此仅编译函数并没有多大用处。我认为我需要用函数编译这两个循环。Cython可以工作,但我担心在这么多函数上维护类型声明的工作量,加上由于所有这些字典都被传递而没有得到很大的改进。 我想知道这是否是PyPy的一个好用例。没有涉及numpy或c扩展。只是简单的函数从字典中读取输入并更新这些字典 我已经阅读了PyPy的文档,其

我正在开发一个应用程序,其中包含一些嵌套的不可矢量化代码循环。有一组大约50个函数被调用数百次或数千次。这些函数接收字典并传回字典。每个函数都很短,每个函数都有简单的数字代码,因此仅编译函数并没有多大用处。我认为我需要用函数编译这两个循环。Cython可以工作,但我担心在这么多函数上维护类型声明的工作量,加上由于所有这些字典都被传递而没有得到很大的改进。 我想知道这是否是PyPy的一个好用例。没有涉及numpy或c扩展。只是简单的函数从字典中读取输入并更新这些字典

我已经阅读了PyPy的文档,其中说PyPy不会改进短时间运行的流程。我想知道这个短时间运行的函数是否会阻止JIT编译器改进运行时

你觉得怎么样?任何与pypy在类似方面的经验都是受欢迎的


谢谢

短期运行指的是执行的代码数量,而不是挂钟时间。JIT跟踪代码执行,只有在看到一段代码重复约1000次时才会启动

别忘了:)也许你还可以找到一种使用
namedtuple
s而不是dictionaries@MikhailBurshteyn为了达到什么目的?
namedtuple
s在构造和元素访问方面应该更快,因此这可能会提高性能。对于PyPy来说,运行函数是没有问题的。文档中提到的是,如果你的整个程序在JIT预热时间很短的情况下快速完成。感谢@mattip提供的信息,如果一个部分没有运行1000次会发生什么?性能能与CPython媲美吗?或者PyPy是否还有其他优点,例如较低的函数调用开销,或者缺点,例如JIT启动时间?启动前的最佳信息在和中提供。你应该试试看。编写对您有意义的基准测试,然后在CPython和PyPy下运行它并进行比较。最好的测试是您的用例。