Было бы интересно, если в IL Emit он генерил именно Func<object, object>, чтоб сравнение "IL Emit" vs "Expression Trees" было корректное. Хотя все равно непонятно отставание аж в 4 раза.
Здравствуйте, Jack128, Вы писали:
J>Было бы интересно, если в IL Emit он генерил именно Func<object, object>, чтоб сравнение "IL Emit" vs "Expression Trees" было корректное. Хотя все равно непонятно отставание аж в 4 раза.
Там нет отставания, там код разный, в комментариях по ссылке отписал.
Здравствуйте, Sinix, Вы писали:
S>Здравствуйте, Jack128, Вы писали:
J>>Было бы интересно, если в IL Emit он генерил именно Func<object, object>, чтоб сравнение "IL Emit" vs "Expression Trees" было корректное. Хотя все равно непонятно отставание аж в 4 раза.
S>Там нет отставания, там код разный, в комментариях по ссылке отписал.
Отличие Emit'а от Trees только в касте string->object. Входящий object к TestClass кастуют оба варианта.
Так вот и не понятно, как каст строки к object (ИМХО для такой каст на уровне маш кода вообще исчезнуть должен) так сильно на производительность влияет
Здравствуйте, Jack128, Вы писали:
J>Отличие Emit'а от Trees только в касте string->object. Входящий object к TestClass кастуют оба варианта.
А если код посмотреть?
Здравствуйте, Sinix, Вы писали:
S>Здравствуйте, Jack128, Вы писали:
J>>Отличие Emit'а от Trees только в касте string->object. Входящий object к TestClass кастуют оба варианта. S>А если код посмотреть?
А. В коде пишет одно, в статье описывает совсем другое. Бывает..
Хотя все равно, (говорим о коде на гитхаб) не понятно тогда, почему emit в 1,5 раза медленнее делегата.
Какая-то чушь в измерениях. Зачем передавать object, а не статически известный тип. Зачем было приплетать левые библиотеки, если IL получения свойства совершенно нетрудно написать напрямую.
Так почему медленно-то? Из-за того, что в попытке "обезопаситься от всего и вся" наворотили много ненужного кода? Ну, учитывая, какие там работают космические архитекторы, не удивлён — один WPF чего стоит!
А вот в D есть traits, та же рефлексия, но времени компиляции. Но это никому не нужно, "патамучта изык сырой, библиатек многа, я низнаю чё делать, а-а-аа-!".
Здравствуйте, hardcase, Вы писали:
H>Какая-то чушь в измерениях. Зачем передавать object, а не статически известный тип. Зачем было приплетать левые библиотеки, если IL получения свойства совершенно нетрудно написать напрямую.
Каст объекта от класса не дорогое занятие, а библиотека используется только при инициализации. Зато коротко и красиво получилось.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Kolesiki, Вы писали:
K>А вот в D есть traits, та же рефлексия, но времени компиляции. Но это никому не нужно, "патамучта изык сырой, библиатек многа, я низнаю чё делать, а-а-аа-!".
Та же фигня и Немерлом. Язык не той системы. 1. Не от Майкрософт. 2. Нет комьюнити потому что п. 1.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.