Ram
Ram

Reputation: 11644

Method with just one line will hit performance?

In a code ValidateRequestmethod is defined

    private bool ValidateRequest()
    {
        return _doc != null;
    }

This method is called from everywhere I want to check if _doc is null. This method has been used 5 times in a cs file.

Performance point of view is it advisable to define a method with just a line? I think before calling this method everything from called will be pushed on stack and after it will be pulled from stack.

Any thoughts?

=== Edit ====

I am using .NET version 3.5

Upvotes: 3

Views: 2086

Answers (4)

pms1969
pms1969

Reputation: 3704

ok, so this is just from LinqPad, and not I guess a definitive answer, but the following code produced a minuscule discrepancy:(00:00:00.7360736 vs 00:00:00.0740074)

void Main()
{
    var starttime = DateTime.Now;
    for (var i = 0; i < 1000000000; i++)
    {
        if (ValidateRequest()) continue;
    }
    var endtime = DateTime.Now;
    Console.WriteLine(endtime.Subtract(starttime));

    starttime = DateTime.Now;
    for (var i = 0; i < 100000000; i++)
    {
        if (_doc != null) continue;
    }
    endtime = DateTime.Now;
    Console.WriteLine(endtime.Subtract(starttime));
}

private object _doc = null;

private bool ValidateRequest()
    {
        return _doc != null;
    }

Upvotes: 1

JaredPar
JaredPar

Reputation: 754545

It's highly unlikely that moving a single line into a method will have a significant impact on your application. It's actually quite possible that this will have no impact as the JIT could choose to inline such a function call. I would definitely opt for keeping the check in a separate method unless a profiler specifically showed it to be a problem.

Focus on writing code that is clear and well abstracted. Let the profiler guide you to the real performance problems.

Upvotes: 7

MikeSW
MikeSW

Reputation: 16348

Don't bother with it. The compiler will probably inline the method as the corresponding IL is quite short.

If that method helps with code maintainability, as it communicates intention go on with it

Upvotes: 7

Louis Kottmann
Louis Kottmann

Reputation: 16618

As always: when you have doubts, benchmark!
And when you benchmark, do it in release mode, otherwise you're not benchmarking with compiler optimizations.

After that, if it does indeed impact performance, you can inline it with NGen.
This SO post talks about it.

Upvotes: 5

Related Questions