他的想法是用StringBuilder去直接改動內存,而不進行一個拼接會更加直接有效的去運行,速度也會更快。
由於認為這個東西有點意思,所以我就想做個對照來看,是不是自己老了記錯了事情,特別是我是做服務端的,效率才是我考慮的,而內存在2014年的今天,難道白菜還不比內存貴?呵呵!
下面是一個簡單的代碼,還有結果圖,我沒什么文化,所以就不繼續說明了,有想法的能夠評論指點一下,謝謝!
class Program
{
static void Main(string[] args)
{
Console.WriteLine("1000萬次運算:");
DateTime dt = DateTime.Now;
xxx xxx=new xxx();
const int testNum = 10000000;
StringBuilder strbuilder = new StringBuilder();
strbuilder.Append("M");
for (int i = 0; i < testNum; i++)
{
strbuilder.Append(i.ToString(),0,i.ToString().Length);
xxx.text = strbuilder.ToString();
strbuilder.Remove(0, strbuilder.Length-1);
}
Console.WriteLine("StringBuilder:" + (DateTime.Now - dt).Ticks);
Console.WriteLine("\r\n");
strbuilder.Remove(0, strbuilder.Length);
strbuilder.Clear();
strbuilder = null;
dt = DateTime.Now;
for (int i = 0; i < testNum; i++)
{
xxx.text = i+"M";
}
Console.WriteLine("String拼接:" + (DateTime.Now - dt).Ticks);
Console.WriteLine("\r\n");
dt = DateTime.Now;
for (int i = 0; i < testNum; i++)
{
xxx.text = string.Format("%Sm", i.ToString());
}
Console.WriteLine("String.Format拼接:" + (DateTime.Now - dt).Ticks);
Console.ReadLine();
}
}
public class xxx
{
public string text { get; set; }
}
最后結論就是,簡單的拼接會比不論什么函數和方法來得有效!!歡迎拍磚!!
