Joe Duffy's Blog暗示使用string.Substring
比string.Split
更有效。
我不知道它是否说Substring
方法没有分配新字符串,或者它是否更有效,因为它没有进行任何不需要的分配。你能否解释一下如何提高效率并展示一个例子。
我理解他的第一个例子是创建一个数组,然后处理数组中的每个字符串。
string str = ...;
string[] substrs = str.Split(',');
foreach (string subtr in substrs) {
Process(substr);
}
以下效率如何
string str = ...;
int lastIndex = 0;
int commaIndex;
while ((commaIndex = str.IndexOf(',', commaIndex)) != -1) {
Process(substr, lastIndex, commaIndex);
lastIndex = commaIndex + 1;
我看到的是使用String.IndexOf
查找逗号的索引然后处理字符串。我假设他打算在处理过程中使用String.Substring
来提取数据。下面的评论之一表明他可能会逐字逐句地提出它。他是否会拉字符,直到他点击下一个逗号可能会构建一个char数组?
答案 0 :(得分:7)
好悲伤。
老笑话:经理想知道程序员A或程序员B是否是更好的程序员,所以他上演了一场比赛。他们都写了一个程序来解决一个复杂的问题,编写最好的程序的人会赢。
两位程序员提交了他们的答案。程序员A的程序跑得最快,当程序员B指出程序员A程序提供的答案有点偏离时,经理即将宣布他是胜利者。
“但我的计划仍然是最快的,我应该获胜”,程序员A说。“如果答案不一定正确,我可以编写一个比你的程序快10倍的程序”,反驳程序员B。
Joe Duffy的第二个例子,他避免使用string.Split(),这是错误的。它不会编译。变量“substr”未定义。
我休息一下。