Что лучше/рекомендуется использовать, querySelector или getElementById/getElementsByClassName?
Во всех браузерах по разному, но традиционно считается что самый быстрый это getElementById.
getElementsByClassName - очень быстр, но появился только в IE9, так что если поддерживаем IE8, то его не используем.
querySelector/querySelectorAll - супер универсальный и очень неплохо оптимизирован в браузерах сегодня.
В остальном поищите тесты, аналогичные этому: https://jsperf.com/getelementsbyclassname-vs-query... или этому: https://jsperf.com/getelementsbyclassname-vs-query...
и посравнивайте в разных браузерах, а потом решите для себя.
ИМХО, в любом случае, производительность всех этих методов в современных браузерах очень очень высока, и вообще берите то что нравится больше.
Внутреннее устройство поисковых методов