我可無意貶低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
"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...