Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 三元算子叠代_C#_Wpf_Performance_Conditional Operator - Fatal编程技术网

C# 三元算子叠代

C# 三元算子叠代,c#,wpf,performance,conditional-operator,C#,Wpf,Performance,Conditional Operator,我想知道:就这两个版本的性能而言,最好的说明是什么: Background = Application.Current.Resources[condition ? BackgroundName1 : BackgroundName2] as Brush; 以及: 有什么区别吗?如果是,哪一个更好 注意:BackgroundName1和BackgroundName2只是字符串,没有任何区别。第一个字符串更短,可读性更强 它也更容易维护。 如果以后将其更改为阅读其他资源词典,则可能会忘记更改第二本词

我想知道:就这两个版本的性能而言,最好的说明是什么:

Background = Application.Current.Resources[condition ? BackgroundName1 : BackgroundName2] as Brush;
以及:

有什么区别吗?如果是,哪一个更好


注意:BackgroundName1和BackgroundName2只是字符串,没有任何区别。

第一个字符串更短,可读性更强

它也更容易维护。
如果以后将其更改为阅读其他资源词典,则可能会忘记更改第二本词典的后半部分


第一个是更清晰地阅读同一本词典。

不要太沉迷于微观优化!您将获得的性能增益为零。最后选择可读性更强、更容易理解的代码。

首先:使用探查器查找最慢的代码。如果你有一个性能问题,花几个小时或几天的时间来做一些已经足够快的事情是没有意义的


第二:你可以通过两种方式来确定问题的答案,并仔细测量是否有差异。不要问我们哪个更快;我们不知道,因为我们没有尝试过,也没有能力尝试

你看过IL了吗?第一个问题更容易阅读,这比所有其他问题都重要,但是“它有效吗?”我想。使用任何对你来说更容易阅读和维护的东西。这无关紧要。如果你有一个性能问题,那不是导致它的代码行;如果你没有问题,担心这是过早的优化。@michael:我确实有性能问题,我到处寻找,试图在这里和那里赢得一些时间。。。我承认我一定已经达到了一个里程碑。。。我可能无法获得更多。。。无论如何谢谢:)谢谢。我确实存在性能问题,虽然我并不认为有必要调整这条线,但只是出于好奇……事实上,我有理由相信它们的性能会相同。这两种情况都执行一次强制转换、字典查找和属性获取。除非他有邪恶的副作用,否则根本不会有什么不同。@SLaks:我很肯定你是对的。正如我以前的开发经理常说的那样,“你确信你会把你的车押在上面吗?”如果多年来我学到了一件关于性能的事情,那就是有时候复杂系统的性能是非常违反直觉的。例如,我们最近正在调整一个受收集压力限制的系统,发现当我们取消大量分配时,程序会变慢。这些分配恰好以正确的方式调整了其他一些区块……是的。
Background = condition ? Application.Current.Resources[BackgroundName1] as Brush : Application.Current.Resources[BackgroundName2] as Brush;