我理解String和StringBuilder(StringBuilder可变)之间的区别,但两者之间是否有很大的性能差异?
我正在研究的程序有很多案例驱动的字符串附加(500+).使用StringBuilder更好的选择?
someString[someRandomIdx] = 'g';
Run Code Online (Sandbox Code Playgroud)
这会给我一个错误,
我该如何实现上述目标?
编辑:
是的它是'string'类型
什么是性能优先级以及优先选择以下各项的条件:
String.Format("{0}, {1}", city, state);
Run Code Online (Sandbox Code Playgroud)
要么
city + ", " + state;
Run Code Online (Sandbox Code Playgroud)
要么
StringBuilder sb = new StringBuilder();
sb.Append(city);
sb.Append(", ");
sb.Append(state);
sb.ToString();
Run Code Online (Sandbox Code Playgroud) .net performance stringbuilder string.format string-concatenation
我想问一下人们对于编写字符串的想法,以及构建字符串时性能是否存在巨大差异.
近年来我一直被告知永远不要做以下事情:
string dogName = "Ralph";
DateTime bornDate = DateTime.Parse("2010-01-01");
string fullText = "I am a Dog and my name is " + dogName + " and i was born on the " + bornDate.ToString("dd/MM/yyyy");
Run Code Online (Sandbox Code Playgroud)
并总是告诉类似下面的东西.
string dogName = "Ralph";
DateTime bornDate = DateTime.Parse("2010-01-01");
string fullText2 = String.Format("I am a Dog and my name is {0} and i was born on the {1:dd/MM/yyyy}", dogName, bornDate);
Run Code Online (Sandbox Code Playgroud)
我看到使用后面的语句的原因,但是有没有人知道第一个有什么类型的性能问题.
并使用StringBuilder对象而不是使用
string str = "Adding this comment to the string\n"
str += "Then Add …Run Code Online (Sandbox Code Playgroud) 我有这个代码:
public String toString(Day day)
{
String s = day.getDayName() + " " + day.toString();
return s;
}
Run Code Online (Sandbox Code Playgroud)
这是Day类的toString方法:
public String toString()
{
String s = "";
for (Slot slot: slots)
s += slot.toString();
return s;
}
Run Code Online (Sandbox Code Playgroud)
当一遍又一遍地调用它时会打印:
barbi
monday 10: X 11: 12: 2: 3: 4:
tuesday 10: 11: 12: 2: 3: 4: X
wednesday 10: 11: 12: 2: 3: 4:
thursday 10: 11: 12: 2: 3: 4:
friday 10: 11: 12: 2: 3: 4:
bobbi
monday 10: 11: … 已经有很多关于字符串和字符串构建器之间差异的问题,大多数人都认为字符串构建器比字符串更快.我很想知道字符串构建器是否太好所以为什么字符串存在?此外,有些正文可以给我一个例子,其中字符串比字符串构建器更有用吗?
我有C#代码执行此操作:
// This returns 10,000 rows quite quickly, but displaying them below is slow
DataTable dt = GetUsageStats();
string html = "<table>";
// This part is really slow
foreach (DataRow dr in dt.Rows)
{
html += "<tr>";
html += "<td>" + dr["column1"].ToString() + "</td>";
html += "<td>" + dr["column2"].ToString() + "</td>";
...
html += "<td>" + dr["column5"].ToString() + "</td>";
html += "</tr>";
}
html += "</table>";
Run Code Online (Sandbox Code Playgroud)
由于10,000个左右的记录,foreach变得如此缓慢.有没有任何机制来加快这个过程?
谢谢!
我最近被问到这个问题:String和StringBuilders之间有什么区别?
我知道我已经在某处读过StringBuilders是不可变的,但是不可变的是什么以及StringBuilder上的操作如何变得比String更快,我没有意识到.
请任何人帮我理解这个吗?
c# ×5
.net ×4
performance ×3
string ×2
.net-3.5 ×1
formatted ×1
heuristics ×1
java ×1
printing ×1
sql ×1