c#字符串学习笔记一
2009-01-16 14:36
176 查看
1. 首先连接较小的字符串可以显著提高操作性能,因为这样可以使用告诉缓存。例如,考虑下面的代码:
str = str + “.” + Environment.NewLine
首先连接较小的字符串可以用到高速缓存并提高连接操作性能:
str = str + (“.” + Environment.NewLine)
2. 在web开发中构造字符串发送到客户端也是有讲究的,考虑以下代码:
strHTML = “<HTML><BODY>”;
strHTML = strHTML + “My name is:”;
strHTML = strHTML + Request.ServerVariables(“SERVER_NAME”);
strHTML = strHTML + “</BODY></HTML>”;
Response.Write(strHTML);
这种连接方法容易理解,但效率低下,因为当声明strHTML时系统无法了解它需要占用多大的内存空间,仅当给变量赋值时,系统才知道分配多少内存空间,对于每一次附加的字符串连接操作,系统必须分配更多的内存空间,然后复制字符,要知道内存的分配和复制非常耗时间和资源!上面的代码段潜在的开始了4个互不相连的内存分配过程,这并不困难,但由于这是web页,对于每一次页面请求都要如此,如果该web页面每秒接收5个请求,则每秒会发生20次的内存分配和字符复制过程,天哪!
因此我们采用如下方式优化上述代码,将所有的字符串片断置入一个数组,然后把这些字符串片断连接为一个字符串:
string[] arrString = new String[3];
string strHTML;
arrString [0] = “<HTML><BODY>”;
arrString [1] = “My name is:”;
arrString [2] = Request.ServerVariables(“SERVER_NAME”);
arrString [3] = “</BODY></HTML>”;
strHTML = arrString[0] + arrString[1] + arrString[2] + arrString[3];
Response.Write(strHTML);
哇卡卡!这样就减少了内存分配次数和复制次数。你还费解吗?
str = str + “.” + Environment.NewLine
首先连接较小的字符串可以用到高速缓存并提高连接操作性能:
str = str + (“.” + Environment.NewLine)
2. 在web开发中构造字符串发送到客户端也是有讲究的,考虑以下代码:
strHTML = “<HTML><BODY>”;
strHTML = strHTML + “My name is:”;
strHTML = strHTML + Request.ServerVariables(“SERVER_NAME”);
strHTML = strHTML + “</BODY></HTML>”;
Response.Write(strHTML);
这种连接方法容易理解,但效率低下,因为当声明strHTML时系统无法了解它需要占用多大的内存空间,仅当给变量赋值时,系统才知道分配多少内存空间,对于每一次附加的字符串连接操作,系统必须分配更多的内存空间,然后复制字符,要知道内存的分配和复制非常耗时间和资源!上面的代码段潜在的开始了4个互不相连的内存分配过程,这并不困难,但由于这是web页,对于每一次页面请求都要如此,如果该web页面每秒接收5个请求,则每秒会发生20次的内存分配和字符复制过程,天哪!
因此我们采用如下方式优化上述代码,将所有的字符串片断置入一个数组,然后把这些字符串片断连接为一个字符串:
string[] arrString = new String[3];
string strHTML;
arrString [0] = “<HTML><BODY>”;
arrString [1] = “My name is:”;
arrString [2] = Request.ServerVariables(“SERVER_NAME”);
arrString [3] = “</BODY></HTML>”;
strHTML = arrString[0] + arrString[1] + arrString[2] + arrString[3];
Response.Write(strHTML);
哇卡卡!这样就减少了内存分配次数和复制次数。你还费解吗?
相关文章推荐
- C#学习笔记—分析字符串中包含元素的类型
- C#学习笔记三字符串相关操作
- 我的C#学习笔记(2)――字符串
- C#学习笔记6:各种字符串问题
- C#学习笔记—字符串操作
- 学习笔记9:C#基础(面向对象和字符串的方法)
- [学习与积累] CLR via C#(第三版)笔记——基本类型(字符串一)
- C#学习笔记之字符串和16进制字符串之间的转换
- 学习笔记之C#parm、命名空间、字符串处理
- C# 学习笔记 -- 第四天 处理字符串
- 黑马程序员之C#编程基础学习笔记:将一个字符串数组输出为|分割的形式,比如“梅西|卡卡|郑大世"
- C#学习笔记:生成字符串的全排列
- C#学习之路,学习笔记 2.2 字符、字符串、数字的初始化与读取
- C#学习笔记-字符串处理
- .NET/Dot Net学习笔记---.net理解,C#.net的基本类型,字符串转义字符处理..
- 黑马程序员之C#学习笔记:求一个字符串中各个字符出现的次数
- 1.C#基础学习笔记3---C#字符串(转义符和内存存储无关)
- 1.C#基础学习笔记3---C#字符串(转义符和内存存储无关)
- 学习笔记:C#执行字符串表达式
- 黑马程序员之C#编程基础学习笔记:有一个整数数组,请声明一个字符串数组,将整数数组中的每一个元素的值转换为字符串保存到字符串数组中