大写字符串的第一个字符:服务器的成本更高的是什么?C#
本文关键字:是什么 服务器 字符串 第一个 字符 | 更新日期: 2023-09-27 18:26:03
我有两种方法可以将字符串的第一个字母大写,但我想知道哪种方法使用更多的服务器资源?(MVC 5,C#)
string test1 = test.ToUpper()[0] + test.Substring(1);
或
string test1 = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(test.ToLower());
将其添加到ExtensionMethods.cs 中
public static class ExtensionMethods
{
public static string UppercaseFirstLetter(this string value)
{
//
// Uppercase the first letter in the string this extension is called on.
//
if (value.Length > 0)
{
char[] array = value.ToCharArray();
array[0] = char.ToUpper(array[0]);
return new string(array);
}
return value;
}
}
根据:http://www.dotnetperls.com/uppercase-first-letter它比第一个方法更快,因为它只在return语句中分配一个新字符串。第一种方法分配两个字符串:Substring(1),然后是一个带字符串的新字符串。凹面。
我做了一个dotnetfiddle,它测试了您提到的两种方法的性能,以及SatuDuaTiga建议的一种方法。
https://dotnetfiddle.net/VyNjht
SatuDuaTiga建议的方法似乎比第一种方法略胜一筹,但在CultureInfo命名空间中使用.ToTitleCase()是迄今为止最差的。
多次运行的平均结果:
- 方法1:93673个刻度
- 方法2:260491个刻度
- 方法3:90649个刻度
你可以反汇编TextInfo类并查看.ToTitleCase()方法的源代码,你会发现它做了很多事情。
我做了一个小的基准测试来检验它,两种方法之间没有明显的差异。您可以使用下面的代码在您的终端执行相同的操作。请尝试,按照@ta.speot.的建议多次运行它。在下面的评论中。
static void Main(string[] args)
{
for (int i = 0; i < 5; i++)
{
Benchmark();
Console.WriteLine();
}
}
static void Benchmark()
{
string test = "rahul";
Stopwatch watch = Stopwatch.StartNew();
string test1 = test.ToUpper()[0] + test.Substring(1);
watch.Stop();
Console.WriteLine(watch.ElapsedTicks);
watch.Restart();
string test2 =
CultureInfo.CurrentCulture.TextInfo.ToTitleCase(test.ToLower());
watch.Stop();
Console.WriteLine(watch.ElapsedTicks);
}
若你们多次运行它,那个么看起来第一次接近它比第二次快一点。我试了5次,下面是的结果
4
5
2
4
2
3
2
3