Python和Ruby迴圈語句的效率問題

2022-02-17 16:27:37 字數 1235 閱讀 8474

我可無意貶低python和ruby的效能,我也不想在這討論語言效能這個問題。所以提刀拎磚進來的各路神仙請息怒,我只是無意之中碰到這這個可能是很多初學者都會碰到的問題。對於初學者,應該以理性的說服教育為主,胡砍亂拍是不對滴。

這兩天考慮基於bellman-ford嘗試實現我的想法。昨天睡覺之前完成了python的實現,可是程式跑起來之後居然就像死了一樣。我跟進去發現,慢的地方就在bellman-ford的那個巢狀迴圈的地方。然而實際上,我的輸入規模並沒有大的那麼恐怖,有16108個頂點和10310條邊,也就是乙個16108×10310的迴圈而已,所以應該不至於把程式拖死吧。於是我做了下面的實驗,分別在c#、python和ruby中進行了測試。**如下,非常簡單:

1. c#

1using

system;23

public

class

4", counter);

12}13

}2.  python

1counter =0

2fori 

inrange(

16108):3

forj 

inrange(

10310):4

counter 

=counter +156

print

"counter is: "+

str(counter)

3. ruby (沒有ruby的**模板,用python的湊合了)

1counter =0

2fori 

in0..

16107

3forj 

in0..

10309

4counter +=1

5end6

end7

puts counter

粗略測試執行時間結果為:

c#:不到1秒

python:45秒左右

ruby:1分33秒左右

這個結果讓我很吃驚,於是又在同事arcgis裡面用vba試了一下,結果是不到2秒迴圈結束。這種巢狀迴圈應該在平時的**中非常常見啊,為什麼python和ruby會慢的這麼離譜?是我的****寫的有問題嗎?在csdn上發了一帖,結果有一位「雙星」回覆說:「是慢,沒辦法。盡量別寫這樣的**是了。需要速度的時候用c或者c++寫擴充套件吧。」omg...我不會才用python乙個月就遇到這種語言本身的致命缺陷吧...對我將來「以指令碼語言為主,編譯語言為輔」的戰略規劃打擊太大了吧...

p.s.不好意思的順便也把ruby也給連累了...

Python條件語句和迴圈語句

1 python條件語句 python條件語句是通過一條或多條語句的執行結果 true或者false 來決定執行的 塊。python程式語言指定任何非0和非空 null 值為true,0 或者 null為false。基本形式為 if 判斷條件 執行語句 else 執行語句 當判斷條件為多個值時,可以...

python 條件語句和迴圈語句

一 條件分支語法 if 條件 條件為真執行得操作 else 條件為假執行的操作 使用三元操作符 語法 x if 條件 else y eg x,y 4,5 if x y small x else y small x if x y else y elif else if的縮寫 二 for迴圈 for 目...

Python 迴圈語句和條件語句

python程式語言指定任何非0和非空 null 值為true,0 或者 null為false。python 程式設計中 if 語句用於控制程式的執行,1.基本形式 if 判斷條件1 執行語句1 elif 判斷條件2 執行語句2 elif 判斷條件3 執行語句3 else 執行語句4 2.if el...