代码如下:
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace RegularExpression
{
    public class TimeTest
    {
        static void Main()
        {
            FileStream file = new FileStream(@"c:\html test.txt", FileMode.Open);
            //打开文件流
            StreamReader read = new StreamReader(file);
            //读入流
            char[] test = read.ReadToEnd().ToString().ToCharArray();
            //将读入的流转换为字符数组 主要用来测试
            string stringadd = null;
            int startTime;
            int endTime;
            //定义两个变量用来测试追加操作前后时间之差
            startTime = Environment.TickCount;
            //起始时间
            foreach (char c in test)
            {
                stringadd += c;            }
            //将整个字符数组追加到stringadd中
            endTime = Environment.TickCount;
            //结束时间
            Console.WriteLine(endTime - startTime);
            //时间差是2375
            Console.WriteLine(stringadd.Substring(0, 10).ToString());
            //察看是否读入
            StringBuilder sb = new StringBuilder();
            startTime = Environment.TickCount;
            foreach (char c in test)
            {
                sb.Append(c);
            }
            //将整个字符数组追加到sb中
            endTime = Environment.TickCount;
            Console.WriteLine(endTime - startTime);
            //时间是0??
            Console.WriteLine(sb.ToString(0,10));
        }
    }
}

解决方案 »

  1.   

    html test.txt是一个网页,你可以随便下载一个网页作为测试,只要够长就可以了
    之所以不明白,就是为什么用sb进行append操作,花费的时间是0呢?
      

  2.   

    并不真的是0,只是说明Append在1个tick(10^-7 s)的时间内就完成了。Append一般是很快,因为基本不涉及内存分配。
      

  3.   

    string做大量+运算的效率本来就低。
    难道sb效率高也有错? 你的测试文件太小了,我测试了个10M的文件,得出的结果是484
    cpu p4 2.66GHz
    ROM 512M
      

  4.   

    嗯,我在前面又加了一层100次循环,终于看到需要花费的时间了。确实比较快!书上说用append进行连接速度比较快,所以我就做了这个测试,确实。。