我想了解您是否可以就以下代码提供您的意见,这是使用 .net 内置方法解决性能问题的最简单示例。在线教程强烈推荐它们...
public void stringFormatVsConcatShowResults()
{
float timeFormat = 0, timeConcat = 0;
for (int counter = 0; counter < 10; i++)
{
if (counter % 2 == 0)
timeFormat += TestStrFormat(1000000, true);
else timeConcat += TestStrFormat(1000000);
}
if (timeFormat > timeConcat)
{
float precWonBy = (timeConcat / timeFormat) * 100;
int prcfractionalPart = new Version(precWonBy.ToString()).Major;
MessageBox.Show("The fstest (by " + prcfractionalPart + " %)is Concat");
}
else
{
float precWonBy = (timeConcat / timeFormat) * 100;
int precfractionalPart = new Version(precWonBy.ToString()).Major;
MessageBox.Show("The fstest (by" + precfractionalPart + " %)is string.Format()");
}
}
public int TestStrFormat(int iterate, bool WstringFormat=false)
{
string testStr = string.Empty, Enewline = Environment.NewLine;
const string header = "its iteration No': ", sign = " !";
Stopwatch swStrFrm = new Stopwatch();
swStrFrm.Start();
if (WstringFormat)
{
for (int counter = 0; counter < iterate; i++)
{
testStr = string.Format("--{0}{1}{2}--{3}", header, counter, sign, Enewline);
}
}
else
{
for (int counter = 0; counter < iterate; i++)
{
testStr = "--its iteration No': " + counter + " !--" + Enewline ;
}
}
swStrFrm.Stop();
return Convert.ToInt32(swStrFrm.ElapsedTicks);
}
你会选择什么,你有没有注意到这个性能问题,
这只是一个简单的例子,
有很多方法,例如将屏幕捕获到位图并将图像转换为字节 [] ...
由于我是软件开发的新手(4 个月 - 自学),我在多个路口遇到了这些情况,我需要去哪里,所以我该如何选择使用什么方法?...我想是一个 .net当我选择在我的应用程序中获得最大性能或者它的(C#)意图不是性能时,我就会叛逆。
打电话stringFormatVsConcatShowResults()
给你自己看看我在说什么
- 重新编辑
所以在那之后用长字符串说我会做以下事情:
public int TestStrWStrBld(int iterate)
{
StringBuilder sb = new StringBuilder();
const string header = "its iteration No': ", sign = " !";
Stopwatch swStrFrm = new Stopwatch();
swStrFrm.Start();
for (int i = 0; i < iterate; i++)
{
sb.Append(header).Append(i).Append(sign).Append(Environment.NewLine);
}
swStrFrm.Stop();
return Convert.ToInt32(swStrFrm.ElapsedTicks);
}
现在是 StringBuilder 让它快了 600% 以上
感谢您打开我的思路,从现在开始......我将继续寻找正确的实现。
- ReEdit2 或较小的字符串:与字符串相比
Str = "a" + "b" + "c";
下面的速度甚至快了 800%!
public int TestStrWStrBld(int iterate)
{
StringBuilder sb = new StringBuilder();
const string header = "its iteration No': ", sign = " !";
string str = string.Empty;
Stopwatch swStrFrm = new Stopwatch();
swStrFrm.Start();
for (int i = 0; i < iterate; i++)
{
str= String.Concat(header, i.ToString(), sign,Environment.NewLine);
}
swStrFrm.Stop();
return Convert.ToInt32(swStrFrm.ElapsedTicks);
}
所以我想正确的方法是使用 String.Concat(string1, string2, etc...)