Что производительнее: addEventListener или onclick?
 на огромное количество элементов
Вешайте на родителя, а исходный элемент получайте из события.
В отношении скорости хз, не заморачивался, а вообще у меня был написан мегакомбайн по работе с addEventListener, который умел как ставить, так и удалять, так еще ставить единожды, если один и тот же элемент и прежний обработчик....
Почти все ставлю через него, все кейапы, блюры, клики. Но некоторые клики пишу при сборке кнопок (когда надо независимый модуль без привязки к установщику событий). Каждый элемент имеет минимум 2 события, а для мобильных устройств еще больше, т.к. добавляются тачи... Замечу, что именно добавляются, а не подменяются на тачи. 
Отлично работает, тормозов нет, значит проблема в архитектуре установщика.