我在Python中编写了一些使用Java库并使用Jython解释它的代码,但它有点慢。我可以以某种方式编译此代码而不是每次启动脚本时解释它吗? (我读过关于jythonc的内容,但在新版本的Jython中已弃用)
答案 0 :(得分:3)
Jython总是在启动时编译你的应用程序 - 即如果你启动你的应用程序,那么Python代码被编译成Java VM字节码; VM然后执行此字节码。 Jython和javac之间的区别在于javac创建包含字节码的.class文件,而Jython在运行时创建字节码。
jythonc对Python代码的作用与javac对Java代码的作用相同:它将代码编译为.class文件并将其保存到磁盘。性能方面,这并不比Jython的标准行为更好,但它可以在其他JVM语言中使用/扩展Jython代码。
jythonc不会以任何方式提高程序的性能。
使用a profiler检测代码的热点。分析器将向您显示程序花费大部分时间的信息:
了解应用程序的热点后,您将了解如何优化其性能。在上面的屏幕截图中,应用程序的70%以上的时间都花在了构造函数(<init>
)上。
然后,您可以使用多种技术来提高绩效:
使用更好的算法。如果适用,这对性能影响最大。
交易空间执行时间。缓存您将经常调用的函数的结果,特别是如果它们相对较慢 - 例如数据库或网络访问检索的数据。
以较少的开销用语言重新实现热点。在您的情况下,您可以重新实现Java中的热点并从Jython中调用它们。