javac, который компилируется из исходного кода Java в байт-коды, практически не оптимизируется. Действительно, оптимизация часто делает код на самом деле медленным, поскольку его сложнее анализировать для последующей оптимизации.
Единственное существенное различие между сгенерированным кодом для 1.5 и 1.6 состоит в том, что с -target 1.6 добавляется дополнительная информация о состоянии стека, чтобы сделать проверку проще и быстрее (Java ME делает это также). Это влияет только на скорость загрузки класса.
Настоящей оптимизирующей частью является компилятор горячих точек, который компилирует байт-код в собственный код. Это даже обновляется в некоторых выпусках обновлений. В Windows только более медленная клиентская версия точки доступа по умолчанию распространяется в JRE. Точка доступа C2 сервера работает быстрее (используйте -server в командной строке java), но медленнее запускается и использует больше памяти.
Также библиотеки и инструменты (включая javac) иногда выполняют работу по оптимизации.
Я не знаю, почему вы находите JDK 6 медленнее для компиляции кода, чем JDK 5. Есть ли небольшая разница в настройке?