gpt4 book ai didi

.net - 为什么函数isprefix比C#中的Startswith更快?

转载 作者:行者123 更新时间:2023-12-03 13:20:38 27 4
gpt4 key购买 nike

有谁知道为什么C#(.NET)的StartsWith函数比IsPrefix慢得多?

最佳答案

我认为这主要是在获取线程的当前文化。

如果您更改Marc的测试以使用这种形式的String.StartsWith:

    Stopwatch watch = Stopwatch.StartNew();
CultureInfo cc = CultureInfo.CurrentCulture;
for (int i = 0; i < LOOP; i++)
{
if (s1.StartsWith(s2, false, cc)) chk++;
}
watch.Stop();
Console.WriteLine(watch.ElapsedMilliseconds + "ms; chk: " + chk);

离它更近了。

如果使用 s1.StartsWith(s2, StringComparison.Ordinal),则比使用 CompareInfo.IsPrefix快得多(当然,这取决于 CompareInfo)。在我的盒子上,结果是(并非科学地):
  • s1.StartsWith(s2):6914ms
  • s1.StartsWith(s2,false,culture):5568ms
  • compare.IsPrefix(s1,s2):5200ms
  • s1.StartsWith(s2,StringComparison.Ordinal):1393毫秒

  • 显然这是因为它实际上只是比较每个点的16位整数,这非常便宜。如果您不希望进行文化敏感的检查,而性能对您尤为重要,那就是我要使用的重载。

    关于.net - 为什么函数isprefix比C#中的Startswith更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/717855/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com