+ Если оптимизация действительно нужна и цикл предположительно выполняется не малое количество итераций, то существенно ускорить процесс можно вынеся StringBuilder (по факту после компиляции он будет создаваться в каждой итерации) за цикл:StringBuilder sb = new StringBuiler();
for (...) {
...
sb.append("data # ").append(arg[0]).append(" ").append(arg[1]);
string = sb.toString();
sb.setLength(0);
...
}
Таким образом мы как минимум уберем создание одного промежуточного массива внутри sb на каждую итерацию и вероятно очень существенно сократим количество расширение этого массива в процессе добавления туда данных + на каждую итерацию мы убираем создание StringBuilder. В идеале, возможно в схожих ситуациях вообще можно отказаться от типа String. Так как при каждом sb.toString() будет создаваться копия массива с символами, что в самом конечном итоге приводит к лишнему использованию кэша процессора, не говоря об дополнительных операциях копирования.