>это только в 3-м тесте выделяется заранее, во втором буфер расширяется динамически,
>выигрышь в 7 мс, причины охрененной разницы с Вашим тестом несколько
>иные, но хотя бы Java от полного позора спасли и то
>ладноЧто вы бабушку лохматите?
И в первом и во втором ваших тестах ЗАРАНЕЕ распределяется память под StringBuilder (в первом случае "как JVM на душу положит", во втором — сразу вся необходимая).
JIT-компилятор ЗАРАНЕЕ (перед тем, как проанализировать цикл for) осведомлён о распределении памяти под объекты и делает полную оптимизацию выполнения и в первом и во втором случае.
В моём случае переменная d полагается ТОЛЬКО на динамическую оптимизацию вычислений. StringBuilder создаётся внутри цикла, а не вне его; в конце КАЖДОЙ итерации цикла выполняется StringBuilder.toString для строковой переменной d, чего в вашем коде нет. Отсюда и отставание моего кода от вашего в три раза.