2013-05-07 68 views
-2

一般來說,較快的代碼使用較少的系統資源?更快的代碼使用更少的系統資源嗎?

如果是,我應該假設從0.02秒的文件系統中讀取文件比查詢花費了0.03秒的數據庫更輕(更好?)嗎?

請注意:

  • 的速度是不是一個問題在這裏,我只是談論的系統資源,如內存等
  • 而且這是一個普遍的問題,我不是比較文件系統與數據庫。這只是一個例子。

我知道我需要在我的代碼中執行不同的基準或分析以找到準確的答案,但正如我上面所說的,我很好奇,看看它是否一般是正確的。

我曾經在我的項目中做速度基準來定義better解決方案,但是我從來沒有想過我可能需要在內存使用上做基準測試。我做了幾次,但並不嚴重。所以,這就是我問這個問題的原因。我希望這是有道理的。

+1

速度和空間通常是兩個相反的維度。複雜的解決方案(並不複雜)會消耗大量資源,效率低下,但這是另一場辯論... – Aubin 2013-05-07 10:35:11

+0

@Aubin我認爲我沒有得到它,你會解釋更多還是更好,將它作爲答案發布。謝謝! – Mahdi 2013-05-07 10:39:36

+0

使用更少資源的方式是做不超過必要的工作,而且這會自動加快速度。 – 2013-05-07 11:54:44

回答

4

這取決於爲什麼代碼更快。

優化速度的一種常用方法是使用大量其他資源。

以您的示例爲例,數據庫和文件系統都使用RAM內存來緩存數據。數據庫實際上可能更快,因爲它使用更多的RAM來緩存數據。

所以,經常更快的代碼使用更多資源。

+0

嗯,我從來沒有想過這個!我想我一直試圖以某種方式製作資源耗費的應用程序。感謝您的回答,瞭解這樣的事情真的很好! :) – Mahdi 2013-05-07 10:38:06

+0

它是一個折衷..爲了節省CPU處理,你可以緩存預處理的數據到RAM或將其存儲在文件系統或數據庫! – Krunal 2013-08-26 17:32:12

0

它討論的話題很廣泛 更快的代碼意味着什麼?如果一個代碼全部是靜態編譯時綁定,那麼自然就會得到更快的一個。這就是C這樣的結構化編程是基準線。但是,當進入面向對象編程時,只是靜態綁定不提供面向對象的編程圖形。所以,你需要類,對象使用更多的系統資源,比如更多的CPU週期和內存來進行運行時綁定。如果與C和Java相比,.yes C在某些方面肯定比java快。如果你從C和Java運行單個hello world示例程序。你可以看到C比java.獲取更少的資源。它意味着更少的CUP週期和更少的內存但在成本上我們可能會錯過
可重用性,維護性,可擴展性。