gpt4 book ai didi

c# - 切换内部循环影响性能?

转载 作者:行者123 更新时间:2023-11-30 13:19:48 24 4
gpt4 key购买 nike

我所处的场景是循环遍历数据并根据设置以特定方式对其进行格式化,我担心我认为最好的风格可能会影响性能。

代码的基本模式如下

enum setting {single, multiple, foo, bar};
Data data = getData(Connection conn, int id);
setting blah = data.getSetting();
foreach (Item item in data)
{
switch(blah)
{
case blah.single:
processDataSingle(item blah);
break;
...
}
}

我担心的是数据中可能有数千甚至数万项。我想知道是否将开关放在循环中可能会重复评估的位置可能会导致一些严重的性能问题。我知道我可以将 switch 放在循环之前,但是每个 case 都包含它,这看起来可读性要差得多,因为基本功能保持不变不太明显.

最佳答案

您可以设置一次委托(delegate)/操作,然后在循环中每次调用它:

Data data = getData(Connection conn, int id);
setting blah = data.getSetting();
Action<Item> doThis;
switch (blah)
{
case blah.single:
doThis = i => processSingleData(i blah);
break;
...
}
foreach (Item item in data)
{
doThis(item);
}

基本上,将每个“案例”的主体放在一个Action 中,在循环外的switch 中选择那个Action,然后调用循环中的 Action

关于c# - 切换内部循环影响性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15139434/

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