Нужно хотя бы знать, что будет дешево и что дорого с хорошими алгоритмами. Когда Java только вышел, я увидел, как кто-то создал платформу Collections. Они мало что знали о структурах данных, и это было очень неэффективно. Я отправил им по почте, и они сказали: «О - я знал об этом. Теперь, когда я привлек интерес людей к этой проблеме, кто-то другой может заставить ее работать быстро». Но они выбрали операции, для которых не было хорошей реализации (log n), и они не предоставили операций, которые могут быть реализованы эффективно и которые были бы полезны в этой среде (думаю, я помню слияние очередей с приоритетами).
Таким образом, не было никакого хорошего способа взять программу, написанную на их неудачной платформе Collections, и ускорить ее, просто исправив реализацию этой фреймворки.