Стоимость отображения POCO в системе с высокой нагрузкой C # - PullRequest
1 голос
/ 06 июня 2011

У меня есть документ, который необходимо сопоставить с другим документом в системе с высоким трафиком. Я намереваюсь отобразить эти объекты вместе в простом преобразователе, подобном этому:

public class a 
{
    public int MyValue { get;set; }
    public string YAV { get; set; }
}

public class B
{
    public int aTestValue { get;set; }
    public string YetAnotherValue { get; set; }
}

public class Mapper 
{
    public static B MapIt(A a)
    {
        return new B { aTestValue = a.MyValue, YetAnotherValue = a.YAV };
    }
}

Насколько подобное отображение действительно влияет на производительность? Не обращайте внимания на тот факт, что нам придется написать сопоставление для всех наших типов и просто сосредоточиться на потерянной производительности при реальном сопоставлении.

Ответы [ 5 ]

7 голосов
/ 06 июня 2011

Насколько подобное сопоставление действительно влияет на производительность?

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

Очевидно, что это всего лишь 2 цента, если вы хотите, чтобы реальные вещи делали тесты производительности и измеряли разницу с отображением и без сопоставления,

По крайней мере, это то, что я бы сделал: сделайте что-то, что соответствует требованиям, затем сравните это, затем две возможности: вы довольны результатом => отправляете в производство и наслаждаетесь жизнью, или вы не удовлетворенырезультаты и эти тесты позволили вам определить, что эта часть является узким местом для вашего приложения => реорганизовать код и начать думать об его оптимизации.Но никогда не проводите преждевременную оптимизацию, иначе вы вряд ли будете соблюдать сроки проекта.

3 голосов
/ 06 июня 2011

Судя по нашему опыту, накладных расходов не будет много.Недавно я проверил это, извлекая 75 000 строк данных с использованием Linq to SQL, а затем отображая объекты L2S в объекты POCO, используя код отображения, который мы написали.Стоимость этого была удивительно мала.Если я правильно помню, это было что-то от 75 до 100 мс для отображения строк по 75 тыс.

1 голос
/ 06 июня 2011

Лучше всего подключить его к профилировщику и выполнить некоторые измерения. Подобное отображение вручную - довольно легкий способ сделать это, поэтому оно не должно быть значительным. Инструмент AutoMapper также доступен и сократит время кодирования, но имеет немного больше накладных расходов, чем другие сервисы, помимо простого отображения: Анализ производительности AutoMapper

1 голос
/ 06 июня 2011

Почти невозможно понять, как это повлияет на производительность, не зная ничего о масштабе системы, структуре цикла, в которой происходит это отображение, и т. Д.

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

0 голосов
/ 06 июня 2011

Как насчет использования операторов преобразования . Заботьтесь о его производительности, только если профилировщик покажет, что это узкое место.

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