Действительно ли закрытые классы предлагают преимущества в производительности? - PullRequest
127 голосов
/ 05 августа 2008

Я встречал множество советов по оптимизации, в которых говорится, что вы должны пометить свои классы как запечатанные, чтобы получить дополнительные преимущества в производительности.

Я провел несколько тестов, чтобы проверить разницу в производительности, и не нашел ни одного. Я делаю что-то неправильно? Я пропускаю случай, когда закрытые занятия дадут лучшие результаты?

Кто-нибудь запускал тесты и видел разницу?

Помоги мне выучить:)

Ответы [ 11 ]

0 голосов
/ 26 ноября 2009

Запустите этот код, и вы увидите, что запечатанные классы в 2 раза быстрее:

class Program
{
    static void Main(string[] args)
    {
        Console.ReadLine();

        var watch = new Stopwatch();
        watch.Start();
        for (int i = 0; i < 10000000; i++)
        {
            new SealedClass().GetName();
        }
        watch.Stop();
        Console.WriteLine("Sealed class : {0}", watch.Elapsed.ToString());

        watch.Start();
        for (int i = 0; i < 10000000; i++)
        {
            new NonSealedClass().GetName();
        }
        watch.Stop();
        Console.WriteLine("NonSealed class : {0}", watch.Elapsed.ToString());

        Console.ReadKey();
    }
}

sealed class SealedClass
{
    public string GetName()
    {
        return "SealedClass";
    }
}

class NonSealedClass
{
    public string GetName()
    {
        return "NonSealedClass";
    }
}

Выход: Запечатанный класс: 00: 00: 00.1897568 Негерметичный класс: 00: 00: 00.3826678

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...