------------ Дoбавленo в 06.51:
Dilma, в Java так с текстом никогда не работают!
вот правильно
#cppStringBuffer s = new StringBuffer("*");
for(int i = 0; i < 10000; i++)
s.append("*").toString();
------------ Дoбавленo в 14.57:
#cpp
String st = "Маша";
st += "Саша"+"и"+st;
Сначало создаётся слово
Маша
Саша
Саша и
Саша и Маша
Саша
Саша и
Саша и Маша
Все эти слова одновременно будут находиться в памяти, пока неиспользуемые фрагменты соберёт сборщик мусора.
------------ Дoбавленo в 14.59:
Что будет если так вот поступать в цикле хорошо показано в цикле от Dilma.
------------ Дoбавленo в 15.04:
И ещё быстрее можно ускорить используя StringBuilder вместо StringBuffer
------------ Дoбавленo в 08.07:
Бенчмарки C#, C++, Java, Delphi
------------ Дoбавленo в 10.20:
Ещё вариант на StringBuilder, очень быстрый с 1 000 000 интераций.
#cpp
StringBuilder sb = new StringBuilder();
for (int i=0; i<1000000; i++)
{ sb.append("*"); }
String s = sb.toString();
Тесты в ms на 10000 итераций
Скрипт от Dilma - 291
Мой вариант на StringBuffer - 88
Второй вариант на StringBuilder - 4
Тесты в ms на 100000 итераций
Скрипт от Dilma - 34645
Мой вариант на StringBuffer - 8857
Второй вариант на StringBuilder - 9
Второй вариант на StringBuilder на 1000000 итераций - 54
------------ Дoбавленo в 10.52:
хм, в StringBuffer ошибку сделал, так правильно
#cpp
StringBuffer s = new StringBuffer();
for(int i = 0; i < 10000; i++)
s.append("*");
------------ Дoбавленo в 11.01:
Из этого видим что если использовать самый быстрый метод, разрыв с производительностью пакета Windows без использования FTCG возможностей будет всего-то в ~611 раз.
Нужно ещё сделать замеры на чистом IC.