2014-01-21 30 views

回答

1
  • const,以防將來寫道,IEEE std 1800-2012 § 6.20.6「常量常量」狀態「......一個常量可以模擬期間設置...」,這表明它是由賣主以決定是否應該對性能進行任何優化。
  • static將把變量放入共享內存。根據仿真場景,它可能會幫助或傷害性能。實際的性能影響是特定於模擬器的,所以您需要運行自己的基準測試。 IEEE std 1800-2012 § 6.21「範圍和壽命」的更多信息。

對於一個小項目,性能影響可以忽略不計。對於大型項目,性能需要分成幾類:內存使用率和內存訪問時間。 static變量可以權衡較小的內存佔用(共享內存)和較長的查找時間(靜態變量的內存地址可以遠離對象數據的其餘部分)。 const不太可能增加任何負面表現。

獲得一些基本性能數據的最簡單方法是用$finish(2)結束仿真。請參閱IEEE std 1800-2012表20-1診斷$完成。如果模擬器符合標準,這將報告仿真時間,位置和有關仿真中使用的內存和CPU時間的統計信息。

使用ModelSim 10.1d提供的example,所有組合均報告相同的內存使用情況。運行時間僅受打印方法調用次數影響,而不受const/static屬性的影響。

如果我猜的話,性能會(有序最好更糟):

  1. static method
  2. stringconst stringstatic方法
  3. const static string
  4. static string
  5. const string
  6. string
相關問題