2,727
社区成员
发帖
与我相关
我的任务
分享
Stopwatch sw = new Stopwatch();
sw.Start();
string s = "";
for (int j = 1; j <= 50 * 512; j++) s += "狐狸";
sw.Stop();
Console.WriteLine("字符串连接1:{0}", sw.Elapsed);
sw.Reset();
sw.Start();
StringBuilder sb1 = new StringBuilder(50 * 512);
for (int i = 0; i < 50 * 512; i++) sb.Append("狐狸"); // 50K
string s2 = sb.ToString();
sw.Stop();
Console.WriteLine("字符串连接2:{0}", sw.Elapsed);
sw.Reset();
StringBuilder sb = new StringBuilder();
Stopwatch sw = new Stopwatch();
//.NET中汉字与英文字母同样是一个字符,所以只要计算字符的个数就可以
for (int i = 0; i < 50 * 512; i++) sb.Append("狐狸"); // 50K
string notes = sb.ToString();
sb.Length = 0;
sw.Start();
DataTable dt = new DataTable("Test");
dt.Columns.Add("id", typeof(int));
dt.Columns.Add("notes", typeof(string));
sw.Start();
object[] rowValues = new object[2];
dt.BeginLoadData();
for (int i = 1; i <= 10000; i++)
{
rowValues[0] = i;
rowValues[1] = notes;
dt.LoadDataRow(rowValues, true);
}
dt.EndLoadData();
sw.Stop();
Console.WriteLine("插入记录:{0}", sw.Elapsed);
sb.AppendFormat("插入记录:{0}\r\n", sw.Elapsed);
sw.Reset();
sw.Start();
var test = dt.AsEnumerable();
var dt1000 = from row in test where (row.Field<string>("notes").IndexOf("1000", StringComparison.Ordinal) >= 0) select row;
DataView dv3 = dt1000.AsDataView();
sw.Stop();
Console.WriteLine("模糊查找1:{0}", sw.Elapsed);
sb.AppendFormat("模糊查找1:{0}\r\n", sw.Elapsed);
sw.Reset();
sw.Start();
DataRow[] dr3 = dt.Select("notes like '%1000%'");
sw.Stop();
Console.WriteLine("模糊查找2:{0}", sw.Elapsed);
sb.AppendFormat("模糊查找2:{0}\r\n", sw.Elapsed);
sw.Reset();
Clipboard.SetText(sb.ToString());
CLEAR
m.notes=REPLICATE("狐狸",50*1024/4) && 50K大小
CREATE CURSOR t1 ( id i ,notes M NOCPTRANS )
t=SECONDS()
FOR i=1 to 10000
INSERT INTO t1 VALUES ( i,m.notes+TRANSFORM(i))
ENDFOR
?'插入记录:'+TRANSFORM(SECONDS()-t)
t=SECONDS()
SELECT * FROM t1 WHERE AT('1000',notes)>0 INTO CURSOR t3
?'模糊查找1:'+TRANSFORM(SECONDS()-t)
t=SECONDS()
SELECT * FROM t1 WHERE notes like '%1000%' INTO CURSOR t3
?'模糊查找2:'+TRANSFORM(SECONDS()-t)
RETURN
C# VFP
插入记录:00:00:00.0296914 0.591
模糊查找1:00:00:00.4837845 0.933
模糊查找2:00:00:10.2512382 3.095