2014-02-17 37 views
-3

我解決了pascal中一個主要用於函數的問題,並且我沒有達到時間限制,並且問題能夠以最好的方式正確求解。那麼,也許或者我犯了一個錯誤並且錯誤地解決了這些其他函數中的任何一個?pascal中的哪個函數是最快的函數,而for,或重複?

+0

你可以用基準回答你自己的問題。如果你發佈你的代碼,也許有人可以幫助你找出是什麼讓你失望。 – TecBrat

+0

試試並拆卸。不僅僅是基準測試,而是全球真實的答案,但您可以看到,在您的平臺上使用該編譯器時,它確實或沒有製作不同的代碼。 –

+0

給我們一些代碼。可能讓你更好的機會獲得幫助(和更好的評級) –

回答

1

簡答題:試試吧!只需製作3個版本的解決方案,並針對一個良好的海量數據進行測試並記錄需要多少次。如果您還沒有獲得時間限制,請嘗試使用更快的PC或查看解決方案。

1

whilerepeat不是函數,而是表示編程語言固有的循環控制結構。

既不是更快,也不是更慢。兩者都更快,兩者都比較慢。一般的答案是不可能的,你在循環內做的工作越多,任何差異(如果有的話)變得越不相關。

如果你沒有解決你的鍛鍊問題,那麼問題不在於循環的選擇。它可能是你選擇的算法,它可能是你犯的一個錯誤,也可能是測試機沒有足夠的處理時間讓你的程序及時。

0

假設一個合理的編譯器,它們之間應該沒有性能差異。

即使存在差異,它可能可以忽略不計 - 人類無法察覺,並且容易在計算結果的實驗​​誤差範圍內。

由於這是一個學校作業,我建議您查看上週教授的材料;可能會提示更好的方法來解決問題。

0

最初,for被認爲速度更快,因爲它不允許更改啓用某種優化的循環變量,特別是如果未使用循環變量的值。

現在,優化的內存和時間限制較少,各種形式很容易相互轉化,整個討論變得學術化。

請注意,大多數現代編譯器(在Delphi之後)在FOR語句中添加另一個檢查,以檢查上限是否大於或等於下限。如果你必須回答這個問題的作業,請仔細檢查你的編譯器。