Предисловие
Недавно я написал кое -что, что могло рассматривать сплайсинг строкового сращивания и мысли о нескольких методах, но производительность неизвестна, поэтому давайте проверим его ниже. Давайте посмотрим на подробное введение вместе.
Пример кода
открытый тест класса {list <string> list = new ArrayList <> (); @Before public void init () {intstream.range (0, 100000) .Foreach ((index) -> {list.Add ("str" + index);}); } @org.junit.test public void test1 () {string ss = ""; long starttime = System.currentTimeMillis (); for (String S: List) {ss += s; } System.out.println (System.currentTimeMiLlis () - startTime); } @org.junit.test public void test2 () {string ss = ""; long starttime = System.currentTimeMillis (); for (String S: List) {ss = ss.concat (s); } System.out.println (System.currentTimeMiLlis () - startTime); } @org.junit.test public void test3 () {stringBuilder ss = new StringBuilder (); long starttime = System.currentTimeMillis (); for (String S: List) {ss.append (s); } System.out.println (System.currentTimeMiLlis () - startTime); } @org.junit.test public void test4 () {long startTime = System.CurrentTimeMillis (); Stringutils.join (список); System.out.println (System.currentTimeMillis () - startTime); } @org.junit.test public void test5 () {stringBuffer ss = new StringBuffer (); long starttime = System.currentTimeMillis (); for (String S: List) {ss.append (s); } System.out.println (System.currentTimeMiLlis () - startTime); }}Первый тип: 33809
Второй тип: 8851
Третий тип: 6
Четвертый тип: 12
Пятый тип: 7
Производительность: StringBuilder>StringBuffer>StringUtils.join>concat>+
Затем проанализируйте его с уровня исходного кода
StringBuilder:
Каждый сплайсинг строки просто расширяет внутренний массив ChAR и создает только конечную строку, так что это наиболее эффективно
StringBuffer:
По сравнению со StringBuilder есть только один синхронизированный, поэтому разница не является большой в одном резервом случае.
Stringutils.join:
Вы можете видеть, что он все еще реализован внутри StringBuilder, но у каждого цикла есть дополнительный сепаратор для суждения, поэтому он немного медленнее, но не так много, и это порядок во времени.
concat:
Видно, что каждое соединение будет генерировать строку, поэтому эффективность очень низкая
+:
Поскольку это перегруженный оператор, исходный код не может быть найден, но эффективность является самой низкой в соответствии с результатами
Суммировать
Вышеуказанное - все содержание этой статьи. Я надеюсь, что содержание этой статьи имеет определенную справочную ценность для каждого обучения или работы. Если у вас есть какие -либо вопросы, вы можете оставить сообщение для общения. Спасибо за поддержку Wulin.com.