Интерфейс против бетонного типа объявление: Странная склонность.C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Интерфейс против бетонного типа объявление: Странная склонность.

Сообщение Anonymous »

Я применяю правила анализа кода к проекту C# и пытаюсь оценить достоинства CA1859: используйте конкретные типы, когда это возможно для улучшения производительности.

Код: Выделить всё

namespace InterfaceCall
{
using System;
using System.Diagnostics;

internal class Program
{
static void Main(string[] args)
{
while (true)
{
Test concreteTest = new Test();
Call(concreteTest);

ITest interfaceTest = new Test();
Call(interfaceTest);

Console.ReadLine();
}
}

private static void Call(Test test)
{
var sw = Stopwatch.StartNew();
for (int i = 0; i < 10000000; i++)
{
test.Increment();
}

sw.Stop();
Console.WriteLine($"Concrete time taken: {sw.ElapsedMilliseconds} ms");
}

private static void Call(ITest test)
{
var sw = Stopwatch.StartNew();
for (int i = 0; i < 10000000; i++)
{
test.Increment();
}

sw.Stop();
Console.WriteLine($"Interface time taken: {sw.ElapsedMilliseconds} ms");
}
}

public interface ITest
{
void Increment();
}

public class Test : ITest
{
private int _count;

public void Increment()
{
_count++;
}
}
}
На машине другого разработчика при запуске в режиме выпуска без отладки результаты были примерно так же, как и ожидалось (то есть конкретная версия немного быстрее, примерно 1 мс на миллион итераций):


Подробнее здесь: https://stackoverflow.com/questions/796 ... ing-oddity
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»