Sherif
Sherif

Reputation: 1279

C# Code optimization

who could be faster ? and why ?

1:

Point point = new Point(25,25);   //any numbers..
Point point2 = new Point(20,95);  //any numbers..

Graphics g = CreateGraphics();
g.DrawLine(point,point2);

OR

2:

Graphics g = CreateGraphics();
g.DrawLine(new Point(25,25),new Point(20,95));

Upvotes: 0

Views: 1276

Answers (6)

Mike Dunlavey
Mike Dunlavey

Reputation: 40669

It all depends on what else you're doing.

If you're doing almost nothing else (which I doubt) then this is the "bottleneck".

If this is the "bottleneck" then you still don't know what's dominant:

  • two "new"s and associated constructors, destructors, and garbage collection.

  • actually rendering lines.

The second is probably unavoidable, but the first is only there for style reasons.

You can find out by profiling or this simple method.

Or you can avoid the whole question with:

g.DrawLine(25,25,20,95);

Upvotes: 0

Ana Betts
Ana Betts

Reputation: 74654

Neither is faster, the fastest one would be the one that avoids allocating those points in the Render path altogether and precreates them earlier

Upvotes: 2

Factor Mystic
Factor Mystic

Reputation: 26770

Micro Optimization, huh? One notable playwright says code readability is more important than micro optimizations, and I agree.

Upvotes: 2

arul
arul

Reputation: 14084

None of them, since both snippets will compile to the same MSIL code representation.

Besides, this is a micro-optimization, which you should avoid before actually knowing that it is the bottleneck.

Upvotes: 15

Charles Ma
Charles Ma

Reputation: 49171

2 might be faster because you're not creating intermediate pointers to the object before passing it to g.DrawLine; however, if that's the only place you use point and point2 then the compiler will likely optimize so the binary is the same anyway.

Upvotes: 0

Aaron Maenpaa
Aaron Maenpaa

Reputation: 122890

Neither, there is no real difference between them except for the loss in readability (especially after a JITing).

Upvotes: 4

Related Questions