贝网博客

我的分类
流水记事
源码下载
Asp.net
其它
数据库
Javascript
.Net技术
我的相册
友情链接
博客园
CSDN博客
Start0
最新回复
fasdfasdf
[:..
lz这个东西好厉害,我..
哈哈,好照片
不错,以前一直用黄色..
终于找到支持ff的修正..
终于找到支持ff的修正..
新鲜性
看看,试试,好不好使。
好东西一起学习[:img0..
分类 =》.Net技术
字符串比较,如IndexOf,CompareTo等,使用StringComparison.Ordinal提高效率
发表于:2012-02-27 10:46:31
更新于:2012-10-29 16:34:35

这两天,由于负责的一个搜索站点服务器CPU很高,领导要求优化代码,在本地安装了个JetBrains dotTrace Performance 4.5,
并抓取IIS的请求,分析请求,发现每次请求IndexOf这个方法调用都超过10万次,已经占用了相当的处理时间了,经过ILSpy反编译,发现IndexOf方法定义:
public int IndexOf(string value)
{
    return this.IndexOf(value, StringComparison.CurrentCulture);
}

参考MSDN:

于是改用另外一个枚举:

Ordinal  
单单这个IndexOf的效率能提高一倍以上(其实不止)

另外,Contains方法默认使用的就是Ordinal了

还有一个字符串的Compare方法,我们经常使用:
string a="1", b = "2";
return a.CompareTo(b);

其实可以改用:
string.Compare(version1, version2, StringComparison.Ordinal);
或者:
string.CompareOrdinal(version1, version2);

效率也是很有提升的,关于StringComparison.CurrentCulture和StringComparison.Ordinal的区别,或其它StringComparison枚举,可以参考MSDN:
http://msdn.microsoft.com/zh-cn/library/system.stringcomparison(VS.80).aspx

发表评论
名称(*):
邮箱:
正文:

©2008 Beinet.cn 版权所有