最快的绘图可能,笔分配和if语句

时间:2012-07-19 23:44:11

标签: c# performance graphics pen

哪个是效率最高的&哪个(主观上)最具可读性? (另一位开发人员编写了第二个选项,我想确保我有充分的理由将其更改为与下面的第一个选项相匹配)

Pen pen = Pens.Red;
if (highlight)
    pen = new Pen(Color.Red, 3.0f);

Pen pen;
if (highlight)
    pen = new Pen(Color.Red, 3.0f);
else
    pen = Pens.Red;

我知道它有一点边缘差异,但我有一个绘制算法需要尽可能快!所以每一点点都有帮助。不,此时使用其他语言来处理绘图不是一种选择。

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

"表现"没有问题。在这里:如果性能问题怀疑,那么基准,基准,基准(在实际使用场景中)并看到。

无论如何,我的偏好是:

var pen = highlight
  ? new Pen(Color.Red, 3.0f)
  : Pens.Red;

但在上面两个中,我更喜欢没有默认值,但不是"性能":我这样做是因为那时候然后可以依赖C#编译器来确保至少一个的值设置路径被执行(或者它将抛出关于使用未分配的局部变量的编译错误)。

(是的,虽然同样适用 分配初始值的情况,但在需要确保一个的更复杂情况下会出现故障执行路径实际执行。因此我选择一致性,在实际可行的情况下。)

快乐的编码!

答案 1 :(得分:2)

var pen = highlight ? highlightPen : Pens.Red;


static readonly Pen highlightPen = new Pen(Color.Red, 3.0f);