Dictionary 在程序中被大量应用,Key 为 string 类型的应用很多,key 在应用时基本都是按照不区分大小写来取值。
例:
public void GetValue(string keyString)
{
var key=keyString.ToLower();
return dict[key];
}
如果 GetValue 被频繁调用,则在性能分析器中可以看到 String.ToLower() 占用CPU时间比较长。
开始的目的是:提高程序的容错性,因此在进行取值时都会进行转换。
这样就造成了:
1.越是接近底层 ToLower 和 Equals 方法,越是被频繁调用,从面影响性能。
2.ToLower 和 Equals 的方法到处飘散,容易出错
解决方法:
1.用约定,约定 Dictionary string 类型 Key 在写入时转换为 大写转小写
毕竟写入的程序次数不多
为什么:
1.什么时间从 Dictionary 中取值,根据当前上下文的状况基本上可以确定在取值是否需要转换
2.减少 ToLower 和 Equals 出现次数
3.提高性能
此方法已经在项目组中实践,郊果非常好