Копирование объектов подходит в .net: Auto Mapper, Emit Mapper, Неявная операция, Копия свойства

Если кто-то знает больше способов сделать это в. NET, а также что вы думаете о том, что подходит? Какой подход вы выбрали и почему?

Вот тесты различных способов копирования объектов в .NET.

Тесты, связанные с этим исходным потоком: Как скопировать значение из класса X в класс Y с тем же именем свойства в c #?

Итак, вот оно, вы можете запустить его самостоятельно:

static void Main(string[] args)
    {
        Student _student = new Student();
        _student.Id = 1;
        _student.Name = "Timmmmmmmmaaaahhhh";
        _student.Courses = new List();
        _student.Courses.Add(101);
        _student.Courses.Add(121);

        Stopwatch sw = new Stopwatch();

        Mapper.CreateMap();            

        StartTest(sw, "Auto Mapper");

        for (int i = 0; i < 1000000; i++)
        {
            StudentDTO dto = Mapper.Map(_student);
        }

        StopTest(sw);

        StartTest(sw, "Implicit Operator");

        for (int i = 0; i < 1000000; i++)
        {
            StudentDTO itemT = _student;
        }

        StopTest(sw);

        StartTest(sw, "Property Copy");

        for (int i = 0; i < 1000000; i++)
        {

            StudentDTO itemT = new StudentDTO
            {
                Id = _student.Id,
                Name = _student.Name,
            };

            itemT.Courses = new List();
            foreach (var course in _student.Courses)
            {
                itemT.Courses.Add(course);
            }
        }

        StopTest(sw);

        StartTest(sw, "Emit Mapper");

        ObjectsMapper emitMapper = ObjectMapperManager.DefaultInstance.GetMapper();

        for (int i = 0; i < 1000000; i++)
        {
            StudentDTO itemT = emitMapper.Map(_student);
        }

        StopTest(sw);
    }

Тесты результаты на моем ПК:

Автоматическое отображение теста: 22322 мс

Неявный оператор теста: 310 мс

Копия свойства теста: 250 мс

Картограф Emit Test: 281 мс

Вы можете получить emit и auto -mappers от здесь:

http://emitmapper.codeplex.com/

http://automapper.codeplex.com/

12
задан Community 23 May 2017 в 12:26
поделиться