Re[6]: Бенчмарк DLR
От: bessony  
Дата: 29.01.12 11:54
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Здравствуйте, bessony, Вы писали:


B>>И кстати as в цепочке if-ов работал бы быстрее чем is.


H>Однако мне не верится в это По моему опыту забегов ncc.exe скорость их равна — JIT компилятор достаточно умен чтобы оптимизировать тестирование типа и последующее приведение к нему.


Рихтер в это верит!
Re[7]: Бенчмарк DLR
От: hardcase Пират http://nemerle.org
Дата: 29.01.12 11:53
Оценка:
Здравствуйте, bessony, Вы писали:

B>Рихтер в это верит!


Ссылку на Рихтера. На практике разница и в микроскоп не видна.

ПС Просьба не оверквотить.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[8]: Бенчмарк DLR
От: bessony  
Дата: 29.01.12 21:19
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Здравствуйте, bessony, Вы писали:


B>>Рихтер в это верит!


H>Ссылку на Рихтера. На практике разница и в микроскоп не видна.


H>ПС Просьба не оверквотить.


CLR via C# .NET 2.0 стр.96

Цитата:

if (о is Employee)
{
Employee e = (Employee) о;
// Используем е внутри оператора if.
}

В этом коде CLR по сути проверяет тип объекта дважды: сначала в операторе is определяется совместимость о с типом Employee, а затем в теле оператора if происходит анализ, является ли о ссылкой на Employee. Контроль типов в CLR укрепляет безопасность, но при этом приходится жертвовать производительностью, так как CLR должна выяснять фактический тип объекта, на который ссылается переменная (о), а затем проверить всю иерархию наследования на предмет наличия среди базовых типов заданного типа (Employee). Поскольку такая схема встречается в программировании часто, в С# предложен механизм, повышающий эффективность кода с помощью оператора as.

Employee e = о as Employee;
if (e != null)
{
// Используем е внутри оператора if.
}

В этом коде CLR проверяет совместимость о с типом Employee, если это так, as возвращает ненулевой указатель на этот объект. Если о и Employee несовместимы, оператор as возвращает null. Заметьте: оператор as заставляет CLR верифицировать тип объекта только раз, a if лишь сравнивает е с null — такая проверка намного эффективнее, чем определение типа объекта.
Re[5]: Проблема с приведением типов
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 29.01.12 21:47
Оценка:
Здравствуйте, Злобастик, Вы писали:

З>Эти объекты должны содержать исключительно данные. (по сути эти объекты — часть модели данных). Алгоритмы должны быть известны контроллеру (под известны я подразумеваю, что либо реализованы в нем, либо делегированы).


http://en.wikipedia.org/wiki/Visitor_pattern не подойдет?
... << RSDN@Home 1.2.0 alpha 5 rev. 16 on Windows 7 6.1.7601.65536>>
AVK Blog
Re: Проблема с приведением типов
От: Философ Ад http://vk.com/id10256428
Дата: 29.01.12 21:45
Оценка:
Здравствуйте, Злобастик, Вы писали:

З>Задача следующая — по заданному идентификатору (ключу) необходимо привести соответствующий объект (значение) к конкретному типу. Проблема в том, что тип этот я не знаю.


Как потом это будет использоваться?
т.е. с какой целью базовый класс приводить к производному?
Всё сказанное выше — личное мнение, если не указано обратное.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.