6

我试图了解是否以及在什么情况下应该使用 Python 类和/或 Java 类。

如果制作一种专业的字典/地图类,应该从 Python 的 dict 或 Java 的 HashMap 或 TreeMap 等中获得一个子类?

使用 Python 是很诱人的,因为它们更简单、更性感。但是,Jython 运行速度相对较慢的一个原因(在我看来是这样)似乎与动态类型有关。我最好说我对这一切都不是很清楚,也没有在夜间研究 Python/Jython 解释器代码,这让我感到羞耻。

无论如何,我突然想到 Java 类可能运行得更快,因为代码可能需要做的工作更少。OTOH 也许它必须做更多。或者也许里面什么都没有。有人知道吗?

4

2 回答 2

5

使用 Jython 的目的是您可以编写 Python 代码并让它在 JVM 上运行。不要通过将 Python 变成 Java 来破坏这一点。

如果 --如果-- 事实证明您的数据结构太慢,您可以直接将其替换为 Java 版本。但那是针对编程的优化阶段的,稍后会出现。


我想我应该试着回答你的问题。我猜想使用本机 Java 结构会更快(因为 JVM 可以比 Python 解释器推断出更多关于它们的信息),但这可能会被与 Jython 接口所需的额外处理抵消。只有测试会告诉你!

于 2012-06-24T14:29:27.400 回答
4

通常,决定不应该是速度之一——无论如何,Python 类将根据 Java 类来实现,即使它们没有从它们继承。因此,速度应该大致相当,并且每个操作最多可以节省几个方法调用。

更大的问题是你打算在课堂上做什么。如果您将它与 Python API 一起使用,您将需要使用 Python 类型,或者类似它们的行为,这样就不必执行实现整个 Mapping 协议的工作(只有您的类更改的位)。如果您使用 Java API,您肯定需要满足静态类型检查 - 这意味着您需要从 Java 的类继承。

如果这在您的情况下不容易回答,请从 Python 开始,因为您(正确 ;-) 发现它们“更简单、更性感”。如果您的课程没有超出您的项目边界,那么如果速度真的成为问题,那么以后更改应该是微不足道的 - 那时,您可能还会考虑诸如“它是否有助于实现它”之类的问题完全在 Java 级别?” 您希望已经认识到现在要考虑的优化是过早的。

于 2012-06-24T16:30:22.140 回答