【发布时间】:2013-02-28 15:31:40
【问题描述】:
我处于循环数据并根据设置以特定方式对其进行格式化的场景中,我担心我认为最好的风格可能会妨碍性能。
代码基本模式如下
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 都包含它,这似乎不太可读,因为基本功能保持不变的情况不太明显。
【问题讨论】:
-
你能发布完整的开关吗?如果我们知道代码的确切功能,我们将能够建议最佳解决方案
-
你做过性能测试吗?制作2个解决方案,使用大量数据> 1000,并计时:)
-
有时根据
blah拆分工作负载并(同时)处理现在统一的“分片”是有效的。虽然无法从发布的代码中分辨出来 -
您是否分析过代码并确定这确实是您的瓶颈?
-
这段代码没有意义。看起来这是一个完全落后的问题方法,但由于我们并不真正知道问题是什么(太抽象),所以没有什么可以做的......
标签: c# performance coding-style