|
1
24
字符串。包含()走了一条痛苦的道路System.Globalization.CompareInfo比较信息进入CLR和NLS支持子系统,我彻底迷路了。它包含高度优化的代码,具有令人印象深刻的性能。唯一的方法是通过pinvoking的标准CRT功能wcsstr,可在msvcrt.dll
它回来了积分零点如果找不到字符串。我做了一些测量,用字符串.IndexOf()而不是Contains()来测试各种字符串比较选项。所有时间都以纳秒为单位,在60个字符的字符串中搜索7个字符的字符串。在不存在字符串的情况下,测量最坏情况。使用20个样本中的最低时间:
|
|
|
3
3
如果.NET字符串。包含使用 Boyer-Moore algorithm 搜索更长的字符串更快。 我建议您,如果您正在读取一个带分隔符的文件,例如,每行都是一系列由逗号分隔的文本字段,如果您知道行中的位置0不能在字符40之前,那么您可以通过不从该位置0进行搜索来节省一些搜索时间。 在分隔符字符上使用String Spilt函数分割一行是很常见的这将返回一个字符串数组。然后您将只在该值可能出现的字段中进行搜索。这也会更快。 |
|
|
4
1
当谈到提高性能时,您需要确保您想要改进的内容实际上是瓶颈的原因。我将首先分析代码中各个部分的性能,并找出哪一部分引入了最大的瓶颈。 乍一看,我认为这个过程的三个主要组成部分值得分析:
虽然有很多优秀的商业剖析器,但是您可以从使用一个简单的计时器开始(比如
看看这些(假的)数字,这个过程中最昂贵的部分是循环和IO代码,所以我将从这里开始尝试提高性能。由于“Do Stuff”部分增加了25秒的总执行时间,因此我接下来会查看该代码,看看是否有什么可以改进的地方。最后,我看一下字符串比较。 第一 . |
|
|
5
1
怎样
它可以这么快,看看编译后的程序集,它是一个混乱的混乱
|
|
|
6
0
这个字符串。包含方法在且仅当此字符串包含指定的字符值序列时返回true。 它基本上用于检查字符串中的子字符串。 http://csharp.net-informations.com/string/csharp-string-contains.htm |
|
|
7
0
|
|
Ben · 统计向量中的单词在字符串中出现的频率 1 年前 |
|
|
bear_525 · 从列中删除中间名和首字母,并保存在单独的列中 1 年前 |
|
|
asdfadf · 为什么具有相同内存值的字符串和整数打印方式不同? 1 年前 |
|
|
user764754 · 防止多行原始字符串文字中出现新行字符 1 年前 |
|
|
Bogaso · 从列表中返回与模式匹配的元素 1 年前 |
|
|
Jasco · 如何使用VBA提取两个相似字符之间的字符串中的单词? 1 年前 |