【推荐阅读:Wap页面使用asp.net中移动控件L】
reviewed by teddy tam & allen lee [3] 【扩展信息:(原创)C#获取本地计算机名,IP,MA】translated by allen lee
introduction
你在代码中处理字符串的方法可能会对性能产生令人吃惊的影响.在本文中,我需要考虑两个由于使用字符串而产生的问题:临时字符串变量的使用与字符串连接.
background
每个项目都有需要你为其考虑编码标准的时候.使用 fxcop 是一个好的开始.我最喜爱的一组 fxcop 规则是“性能”那组.
于是,我就用 fxcop 来检查我的项目并发现一系列的字符串问题.我必须承认一件事:我经常遇到与 c# 的不可变(immutable)的字符串有关的问题.当我看到 mystring.toupper() 时,我经常都会忘记它并不是改变 mystring 的内容而是返回一整个全新的字符串(这是由于 c# 中字符串是不可变的).
我对代码进行一番修正以便去掉 fxcop 的警告,接着我就发现代码的确比之前快了.我决定开展调查,而最终我会写出上面那些测试的代码的.
using the code
测试的代码很简单.一个控制台程序调用四个测试方法,其中每个方法执行一种字符串处理例程 1000 次(整个执行时间已经足够长以便看出其中的性能差别了).
这四个测试方法被分成两组,每组两个.第一组比较两个方法,它们用于非大小写敏感(case-insensitive)的字符串比较.
string comparison and temporary string creation
第一个测试例程是一个蹩脚的非大小写敏感的字符串比较.用于比较的例程的代码是:
static bool badcompare(string stringa, string stringb){ return (stringa.toupper() == stringb.toupper());}对于这段代码,fxcop 给出如下的建议:
... 下一页