IronPython vs Python vs C#for循环的性能

问题描述

我对Python和IronPython比较陌生。我为自己编写的相对简单的代码性能(应该说是缓慢)感到惊讶:

matrix_column_count=1000
matrix_row_count=2000
matrix=[[random.uniform(0,100) for i in range(matrix_column_count)] for j in range(matrix_row_count)]

在IronPython 2.7.10上运行此程序大约需要1秒(有些许变化)! 在Python 3.8.6上运行需要0.55秒 在C#中运行类似的东西需要0.03秒!

对于Python开发和C#开发,这些数字是否“正常”?还是我做错了什么?

解决方法

是的,这些是正确的数字。由于我无法评论(堆栈溢出点不足),因此我将从堆栈溢出中复制粘贴另一个类似的答案

答案很简单,就是Python处理所有对象,并且 默认情况下没有JIT。所以不是很 通过修改堆栈上的几个字节并优化热来提高效率 代码的一部分(即迭代)– Python突兀以及丰富 对象代表数字并且没有即时优化。

如果您在具有JIT的Python变体中尝试过此操作(例如, PyPy)我向您保证,您会看到很大的不同。

一般提示是避免在计算上非常复杂的标准Python 昂贵的操作(尤其是在后端服务中) 来自多个客户的请求)。带有JIT的Java,C#,JavaScript等 效率更高。

在此处查看详细的答案:https://stackoverflow.com/a/29904752/13993546

此外,您可能想检查Python基准测试与其他编程语言的详细比较,因此以下是链接,可能对您有用:

https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/python.html

https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/csharp.html