在我的函数(或任务)中,我有一个仅在该方法中使用的常量字符串。
定义它的最佳方式是什么(性能):
const static string stuff = "stuff";
const string stuff = "stuff";
static string stuff = "stuff";
string stuff = "stuff";
答案 0 :(得分:1)
const
将阻止将来的写入,IEEE std 1800-2012§6.16.6“常量常量”状态“...可以在模拟过程中设置常量......”这表明它取决于供应商决定是否应对性能进行任何优化。static
会将变量放入共享内存中。根据模拟场景,它可能有助于或损害性能。实际的性能影响是模拟器特定的,因此您需要运行自己的基准测试。 IEEE std 1800-2012§6.21“范围和生命周期”了解更多信息。对于小型项目,性能影响可以忽略不计。对于大型项目,性能需要分为几类:内存使用和内存访问时间。 static
变量可以折衷较小的内存占用(共享内存)和较长的查找时间(静态变量的内存地址对于其余的对象数据来说可能比较遥远)。 const
不太可能增加任何负面效果。
获取一些基本性能数据的最简单方法是使用$finish(2)
结束模拟。请参阅IEEE std 1800-2012表20-1-Diagnostics for $ finish。如果模拟器符合标准,这将报告模拟时间,位置以及有关模拟中使用的内存和CPU时间的统计信息。
使用提供的example使用ModelSim 10.1d,所有组合都报告了相同的内存使用情况。运行时间仅受打印方法调用次数的影响,而不是const
/ static
属性。
如果我不得不猜测,那么表现会更好(更好):
const string
位于static method
string
static
方法
const static string
static string
const string
string