IronPython的速度与其他.net语言相比如何?

10 投票
3 回答
6961 浏览
提问于 2025-04-15 15:46

我想给出一些我说的内容的来源,但我没有,只是听说过。

有一次,一个编程教授告诉我,关于 .net 和 Python 的一些软件性能测试,结果显示在某些特定项目上,.NET 的表现是 Python 的 5:8。这是他支持 Python 不是那么慢的一个理由。

事情是这样的,我想尝试 IronPython,因为我可以把我最熟悉的网页框架(asp.net)和我最喜欢的语言(Python)结合起来。我在想,使用 Python 的 ASP.NET 程序速度和使用 VB.net 或 C# 的 ASP.NET 程序速度相比怎么样?有没有相关的性能测试数据呢?

另外,IronPython 的速度和其他 .NET 语言相比,不应该是相似的吗?因为 IronPython 和 Python 不同,它需要编译成 .NET 的中间代码。有人能帮我解答这些问题吗?

问候

3 个回答

0

IronPython的运行速度会比C#慢很多。你可以把这个比较想象成CPython和C之间的差距,不过这个差距要小一些。

1

你可以开启 .net 的跟踪功能,这样页面底部会显示一些时间信息。你可以用 C#/.Net 做一个应用,再用 Python 做一个应用,然后比较一下它们的运行时间。这样你就能得到一个明确的答案。

老实说,我觉得你还是用 C# 更好,因为开发起来“更快”,因为有 Visual Studio 这个环境帮你,而且运行速度也会更快,因为不需要使用动态语言运行时。

9

这里有两个有趣的链接,比较了IronPython、CPython和C#(还有其他语言):

  • CPython和C# (Mono) 的 性能测试,基于网站上详细介绍的几个程序。
  • CPython和IronPython的 性能测试,基于PyStone和PyBench,针对2.6版本。

所以显然,这和你教授告诉你的差不多。但正如你所知道的,这很大程度上取决于你使用的内容。

主要的区别在于Python使用的对象是动态的,而C#是强类型的。因此,IronPython在C#运行的基础上(CLR - 通用语言运行时)又增加了一个层次(DLR - 动态语言运行时),来解决这个差异。

我通常不喜欢引用维基百科的文章,但这是一个不错的起点: http://en.wikipedia.org/wiki/Dynamic_Language_Runtime

现在回到你的项目,性能可能更依赖于你的算法或启发式方法——比如你如何查询数据库——而不是语言本身。如果你熟悉某个网页框架并且觉得满意,最好还是继续使用同样的环境,而不是为了可能的几个百分点而去尝试一些你还需要摸索的东西。当然,如果应用程序是CPU密集型的,那就另当别论了。

撰写回答