我對 Python 和 IronPython 比較陌生。我對我編寫的相對簡單的代碼的性能(應該說緩慢)感到驚訝:matrix_column_count=1000matrix_row_count=2000matrix=[[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# 開發來說是“正常”的還是我做錯了什么?
1 回答

慕姐8265434
TA貢獻1813條經驗 獲得超2個贊
是的,這些數字是正確的。由于我無法發表評論(沒有足夠的堆棧溢出點),所以我將從堆棧溢出復制粘貼另一個類似的答案
答案很簡單,Python 處理所有事情的對象,并且默認情況下它沒有 JIT。因此,Python 并沒有通過修改堆棧上的幾個字節并優化代碼的熱點部分(即迭代)來提高效率,而是隨著表示數字的豐富對象一起運行,并且沒有即時優化。
如果您在具有 JIT 的 Python 變體(例如 PyPy)中嘗試過此操作,我向您保證您會看到巨大的差異。
一般提示是避免使用標準 Python 進行計算成本非常高的操作(特別是如果這是用于服務來自多個客戶端的請求的后端)。Java、C#、JavaScript 等使用 JIT 的效率是無與倫比的。
添加回答
舉報
0/150
提交
取消