在C#中解析字符串的最快方法是什么?
目前我只是使用字符串索引(string[index])并且代码运行合理,但我不禁想到索引访问器所做的连续范围检查必须添加一些内容.
所以,我想知道我应该考虑采用哪些技术来提升它.这些是我最初的想法/问题:
string.IndexOf(),并IndexOfAny()找到感兴趣的字符.这些比手动扫描字符串更快string[index]吗?注意:我应该说,我正在解析的字符串可能相当大(比如30k),而且是自定义格式,没有标准的.NET解析器.此外,这段代码的表现并不是非常关键,所以这部分只是好奇心的理论问题.
30k 并不是我认为的大。在兴奋之前,我先介绍一下。索引器应该能够很好地实现灵活性和安全性的最佳平衡。
例如,要创建一个 128k 字符串(以及相同大小的单独数组),用垃圾填充它(包括处理 的时间Random)并通过索引器对所有字符代码点求和需要... 3ms:
var watch = Stopwatch.StartNew();
char[] chars = new char[128 * 1024];
Random rand = new Random(); // fill with junk
for (int i = 0; i < chars.Length; i++) chars[i] =
(char) ((int) 'a' + rand.Next(26));
int sum = 0;
string s = new string(chars);
int len = s.Length;
for(int i = 0 ; i < len ; i++)
{
sum += (int) chars[i];
}
watch.Stop();
Console.WriteLine(sum);
Console.WriteLine(watch.ElapsedMilliseconds + "ms");
Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)
对于实际上很大的文件,应该使用阅读器StreamReader方法 -等等。
| 归档时间: |
|
| 查看次数: |
6374 次 |
| 最近记录: |