Недавно я услышал интересную и очень поучительную дискуссию о знаменитой цитате Кнута на подкасте (думаю, это были глубоко прожаренные байты), которую я постараюсь обобщить:
Всем известна известная цитата: Преждевременная оптимизация - корень всего зла. .
Однако это только половина. Полная цитата:
Мы должны забыть о малой эффективности, скажем, в 97% случаев: преждевременная оптимизация - корень всего зла .
Посмотрите на это внимательно - скажем, в 97% случаев .
Другая сторона этого утверждения - примерно в 3% случаев, "малые" эффективности имеют решающее значение .
Мой монитор отображает около 50 строк кода. Статистически, по крайней мере 1-2 строки кода на каждом экране будут содержать что-то чувствительное к производительности! Следуя общепринятому мнению: «Сделай это сейчас, оптимизируй позже», не кажется таким хитрым планом, когда ты думаешь, что на на каждом экране у тебя возможная проблема с производительностью.
ИМХО, вы всегда должны думать о производительности. Вам не следует тратить на это много усилий или жертвовать ремонтопригодностью до тех пор, пока это не будет доказано профилированием / тестированием, но вы обязательно должны иметь это в виду.
Я бы лично применил это к универсальному коду:
У вас обязательно есть где-то код, который, когда вы его писали, вы думали «это будет медленно» или «это глупый алгоритм, но он сейчас не важен, поэтому я исправлю его позже». Поскольку вы находитесь в разделяемой библиотеке и не можете утверждать, что метод A будет вызываться только с 5 элементами, вы должны пойти и почистить все это.
Как только вы разберетесь с этими вещами, я не стану идти дальше. Возможно, запустите профилировщик над вашими модульными тестами, чтобы убедиться, что ничего немого не пробилось, но в противном случае ждите отзывов от пользователей вашей библиотеки.