大写字符串的第一个字符:服务器的成本更高的是什么?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());

大写字符串的第一个字符:服务器的成本更高的是什么?C#

将其添加到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 
相关文章: