Протестируйте это в своем сценарии - я думаю, что на это может повлиять множество факторов, особенно когда мы говорим о чем-то с такой низкой относительной стоимостью, как вызов метода / делегата.
Быстрый и простой тест со сборкой релиза не под отладчиком, скомпилированный под 4.0 как «любой процессор» и работающий на 64-битной Windows 7:
Другое редактирование : Упс Вот лучший результат. См. код о том, как это работает
10000000 direct reference calls : 0.011 s
10000000 calls through an interface : 0.037 s
10000000 invocations of an event : 0.067 s
10000000 calls through Action<int> : 0.035 s
Таким образом, в обычном тесте «ничего не делать» с десятью миллионами вызовов событие добавляет .474 сек. [ редактировать , только .026 теперь на намного лучшей машине, все еще примерно вдвое больше]
Я бы больше беспокоился о правильности дизайна, чем полсекунды каждые 10 миллионов вызовов, если только вы не собираетесь делать такое количество вызовов за короткие промежутки времени (в этом случае, возможно, возникает более фундаментальная проблема проектирования).