2012-12-07 25 views
0

我正在寫一些代碼,其中性能很重要。在其中的一部分中,我必須將大量預先計算的數據與動態值進行比較。目前,我存儲該預先計算的數據在cs文件巨型陣列:.cs文件中大型硬編碼數組的性能考慮因素

Data[] data = { /* my data set */ }; 

該數據集爲約90KB,或大致13K元件。我想知道是否有這樣做的不利因素,而不是從外部文件加載它?我不完全確定C#如何在內部工作,所以我只是想知道我可能遇到的任何性能問題。

回答

5

那麼,90kb就是不那麼大,說實話。對於這種大小的數組,你不會看到任何明顯的區別。

一般來說,如果你有一個巨大的數組,我不建議將它存儲在源文件中。這對運行時性能可能不是問題,但我可以看到它減慢了編譯速度。

從設計的角度來看,如果有史以來的變化的決定可能會下降。如果你正在存儲,比方說,某種類型的文件的字節頭,這可能是合理的存儲在源內,因爲它永遠不會改變。但是,一些預先計算的數據,特別是如果您可能在以後再次生成它,則應該將其放入外部文件中。

1

壞:

  • 修改硬編碼的數據集是很麻煩

好:

  • 你從無聊的事情屏蔽像數據文件不是那裏,由於用戶錯誤而被破壞或格式錯誤。
  • 不必加載/解析數據

旁註: 如果你關心性能,確保使用數組,而不是一個列表:Performance of Arrays vs. Lists

+0

有一箇中間道理:你加載的文件(靜態類的構造函數作爲資源嵌入到dll中,很容易替換,沒辦法不在那裏。 – TomTom