Простой тест показывает интересные результаты. Продолжительность указана в миллисекундах.
Я просто хотел поделиться результатами, которые получил. Похоже, что DynamicInvoke действительно имеет большие накладные расходы (как указывал @ ivan-stoev)
Я добавлю результаты как для решения .Invoke
со строго типизированной лямбдой, так и для класса скомпилированного бетона Roslyn, реализующего простой интерфейс для экземпляров.
ConstructorInfo
кэшируется, как и скомпилированное лямбда-выражение.
Для 10 миллионов итераций каждая: (100 миллионов экземпляров для каждого метода)
---------------------------------------------------------------------------
Benchmark Results:
---------------------------------------------------------------------------
Activator Constructor Compiled Lambda
---------------------------------------------------------------------------
Totals : 8121.2488 3067.6226 9353.8141
Average: 0.00081212488 0.00030676226 0.00093538141
Maximum: 922.5987 450.7662 1046.3734
Minimum: 0 0 0
---------------------------------------------------------------------------