作者chhuang (Rolling Star)
看板C_Sharp
标题Re: [问题] 问个简单问题~~~
时间Mon May 14 13:36:01 2007
※ 引述《GreatShot (我要拿Ph.D.!!!)》之铭言:
: string[] stringArray = Regex.Split(source,regexpression);
: 一行搞定
: enjoy it ^^
: 但是效率我就不保证了...有空作个实验吧~~
好像效率会差了一些,而且切出来的阵列内容还需要修饰一下。
首先,写了 Class T 包含静态方法 ToStringArray。
为的是与同是静态方法 Rexgex.Split(source, "") 作比较。
然後,利用 Stopwatch 计算 100 万次各自花的时间。
最後,将 "100 万次所需时间" 与 string[] target 内容列出来。
程式码如下:
using System;
using System.Diagnostics;
using System.Text.RegularExpressions;
internal class T
{
public static string[] ToStringArray(string source)
{
char[] sourceChars = source.ToCharArray();
string[] target = new string[sourceChars.Length];
for (int i = 0; i < sourceChars.Length; i++)
{
target[i] = sourceChars[i].ToString();
}
return target;
}
}
internal class Program
{
private static void Main(string[] args)
{
string source = "1234567";
string[] target = null;
Stopwatch sw = null;
sw = Stopwatch.StartNew();
for (int i = 1; i <= 1000000; i++)
{
target = Regex.Split(source, "");
}
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds);
foreach (string s in target)
{
Console.WriteLine("--- " + s + " ---");
}
target = null;
sw = null;
sw = Stopwatch.StartNew();
for (int i = 1; i <= 1000000; i++)
{
target = T.ToStringArray(source);
}
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds);
foreach (string s in target)
{
Console.WriteLine("--- " + s + " ---");
}
}
}
执行结果:
21412
=== ===
=== 1 ===
=== 2 ===
=== 3 ===
=== 4 ===
=== 5 ===
=== 6 ===
=== 7 ===
=== ===
1028
=== 1 ===
=== 1 ===
=== 2 ===
=== 3 ===
=== 4 ===
=== 5 ===
=== 6 ===
=== 7 ===
--
http://blog.roodo.com/chhuang
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.30.74.102
1F:→ chhuang:学 C# 没有多久...测试方式有错请各位纠正....^^ 05/14 13:37
2F:推 rayhill:有趣的实验@@,会是参数传递产生的差异吗?还有split内部的 05/15 00:12
3F:→ rayhill:运作,来这果然可以学好多东西 05/15 00:14