background image

}  

// 

  

网页每次加载时执行的操作

}  
我们希望尽量不引起回送(每次回送都会要求服务器进行一系列的操作),即使引起回送后。也希望能够执行尽
量少的操作。大规模、浪费时间的操作(例如数据库查找)尤其应当避免,因为它们能够延长应用程序的响应时

  

间。

4、使用 StringBuilder

  

字符串在

.NET 框架中是不可变的,这意味着改变字符串的操作符和方法会返回字符串的改变后的拷贝,这意味着

性能还有提高的空间。当进行大量的字符串操作时,使用

StringBuilder

  

类就是一种比较好的选择了。

下面的

C#代码测试用二种方式从 10000 个子字符串中生成字符串所需要的时间。第一次使用了一个简单的字符串

串联操作;第二次使用了

StringBuilder 类。要想查看结果字符串,可以去掉下面的代码中注解行的注解符号:

  

<%@ Page Language="C#" %>  

<script runat="server">  

void Page_Load(Object Source, EventArgs E)  
{  

int intLimit = 10000;  
DateTime startTime;  

DateTime endTime;  
TimeSpan elapsedTime;  

string strSub;  
string strWhole = "";  

// 

  

首先执行字符串连接操作

startTime = DateTime.Now;  
for (int i=0; i < intLimit; i++)  

{  
strSub = i.ToString();  

strWhole = strWhole + " " + strSub;  
}  

endTime = DateTime.Now;  
elapsedTime = endTime - startTime;  

lblConcat.Text = elapsedTime.ToString();  
// lblConcatString.Text = strWhole;  

// 使用 stringBuilder

  

类进行同样的操作

startTime = DateTime.Now;  
StringBuilder sb = new StringBuilder();  

for (int i=0; i < intLimit; i++)  
{  

strSub = i.ToString();  
sb.Append(" ");  

sb.Append(strSub);  
}  

endTime = DateTime.Now;  
elapsedTime = endTime - startTime;  

lblBuild.Text = elapsedTime.ToString();  
// lblBuildString.Text = sb.ToString();  

}  

</script>