gpt4 book ai didi

c# - 为字符串连接优化聚合

转载 作者:IT王子 更新时间:2023-10-29 04:45:29 25 4
gpt4 key购买 nike

<分区>

更新 - 对于那些爱开玩笑的人,您可以假设无论传递给它的函数是什么,聚合仍然会产生正常结果,包括在优化的情况下。

我编写这个程序是为了构建一长串从 0 到 19999 的整数,用逗号分隔。

using System;
using System.Linq;
using System.Diagnostics;

namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
const int size = 20000;

Stopwatch stopwatch = new Stopwatch();

stopwatch.Start();
Enumerable.Range(0, size).Select(n => n.ToString()).Aggregate((a, b) => a + ", " + b);
stopwatch.Stop();

Console.WriteLine(stopwatch.ElapsedMilliseconds + "ms");
}
}
}

当我运行它时,它说:

5116ms

超过五秒,太糟糕了。当然是因为每次循环都会复制整个字符串。

但是,如果根据注释进行非常小的更改怎么办?

using System;
using System.Linq;
using System.Diagnostics;

namespace ConsoleApplication5
{
using MakeAggregateGoFaster; // <---- inserted this

class Program
{
static void Main(string[] args)
{
const int size = 20000;

Stopwatch stopwatch = new Stopwatch();

stopwatch.Start();
Enumerable.Range(0, size).Select(n => n.ToString()).Aggregate((a, b) => a + ", " + b);
stopwatch.Stop();

Console.WriteLine(stopwatch.ElapsedMilliseconds + "ms");
}
}
}

现在当我运行它时,它说:

42ms

速度提高 100 多倍。

问题

MakeAggregateGoFaster 命名空间中有什么?

更新 2: Wrote up my answer here .

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