|
Теоретический вопрос. Что лучше StringBuilder или List<string> ?
|
|||
---|---|---|---|
#18+
Часто бывает, что надо собрать итоговую строку из всяких кусочков. Потом myStringBuilder.ToString() или myList.Join("хрень какая-нибудь") Я , конечно, могу провести исследования, но вдруг кто-то уже делал? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2018, 19:59 |
|
Теоретический вопрос. Что лучше StringBuilder или List<string> ?
|
|||
---|---|---|---|
#18+
Cat2, При малом количестве строк String.Concat быстрее. При большом (больше ~5-10), уже быстрее StringBuilder. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2018, 20:03 |
|
Теоретический вопрос. Что лучше StringBuilder или List<string> ?
|
|||
---|---|---|---|
#18+
Cat2myList.Join("хрень какая-нибудь")это не в тему. Разное назначение. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2018, 20:18 |
|
Теоретический вопрос. Что лучше StringBuilder или List<string> ?
|
|||
---|---|---|---|
#18+
Petro123Cat2myList.Join("хрень какая-нибудь")это не в тему. Разное назначение. Почему? И так и так получается итоговая строка ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2018, 20:31 |
|
Теоретический вопрос. Что лучше StringBuilder или List<string> ?
|
|||
---|---|---|---|
#18+
Исследований не делал, но StringBuilder это Сhar[], т.е. массив букав, которые трансформируются в строку одним действием. Массив строк трансформируется в одну строку N-1 действием, где N размер массива. ИМХО это тормознее. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2018, 20:33 |
|
Теоретический вопрос. Что лучше StringBuilder или List<string> ?
|
|||
---|---|---|---|
#18+
Cat2Почему? И так и так получается итоговая строка Вход то разный. Либо я не понял. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2018, 20:48 |
|
Теоретический вопрос. Что лучше StringBuilder или List<string> ?
|
|||
---|---|---|---|
#18+
Dima TИсследований не делал, но StringBuilder это Сhar[], т.е. массив букав, которые трансформируются в строку одним действием. Массив строк трансформируется в одну строку N-1 действием, где N размер массива. ИМХО это тормознее. При малом количестве строк, конкатенация быстрее. На скорость оказывают влияние прежде всего выделение памяти и копирование. Конкатенация очень хорошо оптимизирована, чтобы использовать её повсеместно, когда не надо склеивать кучу строк. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2018, 21:07 |
|
Теоретический вопрос. Что лучше StringBuilder или List<string> ?
|
|||
---|---|---|---|
#18+
если не нужно вставлять в начало или середину текст, можно так Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2018, 21:45 |
|
Теоретический вопрос. Что лучше StringBuilder или List<string> ?
|
|||
---|---|---|---|
#18+
Ещё не стоит забывать про работу GC, которую обеспечит массовая конкатенация строк ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2018, 03:37 |
|
Теоретический вопрос. Что лучше StringBuilder или List<string> ?
|
|||
---|---|---|---|
#18+
Было уже, и даже с тестами: http://www.sql.ru/forum/1149509/optimalnyy-sposok-skleyki-ienumerable-string-v-stroku hVosttCat2, При малом количестве строк String.Concat быстрее. При большом (больше ~5-10), уже быстрее StringBuilder. Смотря что в аргументах Concat. Если строки - да, быстрее, т.к. в итоге вызывается Buffer.Memmove , но внутри реализации самого String, с меньшим количеством проверок и всяческих аллокаций. Если param object[], IEnumerable<T>, итд - однохренственно, т.к. конкатенация делается всё тем же StringBuilder'ом (который в итоге тоже вызывает Buffer.Memmove). ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2018, 06:07 |
|
Теоретический вопрос. Что лучше StringBuilder или List<string> ?
|
|||
---|---|---|---|
#18+
Стати, только hVostt озвучил цифру до какой не следует голову забивать сабжем. 10 строк. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2018, 07:06 |
|
Теоретический вопрос. Что лучше StringBuilder или List<string> ?
|
|||
---|---|---|---|
#18+
Petro123Стати, только hVostt озвучил цифру до какой не следует голову забивать сабжем. 10 строк. А если 10000 раз по 10 строк? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2018, 08:17 |
|
Теоретический вопрос. Что лучше StringBuilder или List<string> ?
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныPetro123Стати, только hVostt озвучил цифру до какой не следует голову забивать сабжем. 10 строк. А если 10000 раз по 10 строк? Пофиг сколько раз, т.к. myStringBuilder.ToString() тоже 10000 раз надо будет делать. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2018, 08:22 |
|
Теоретический вопрос. Что лучше StringBuilder или List<string> ?
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныPetro123Стати, только hVostt озвучил цифру до какой не следует голову забивать сабжем. 10 строк. А если 10000 раз по 10 строк?)))) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2018, 08:56 |
|
Теоретический вопрос. Что лучше StringBuilder или List<string> ?
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныБыло уже, и даже с тестами: http://www.sql.ru/forum/1149509/optimalnyy-sposok-skleyki-ienumerable-string-v-stroku да какие там тесты... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2018, 09:32 |
|
Теоретический вопрос. Что лучше StringBuilder или List<string> ?
|
|||
---|---|---|---|
#18+
Еще для ускорения можно задействовать String.Concat (String, String, String, String) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2018, 09:38 |
|
Теоретический вопрос. Что лучше StringBuilder или List<string> ?
|
|||
---|---|---|---|
#18+
Dima TЕще для ускорения можно задействовать String.Concat (String, String, String, String) это быстрее чем сложить плюсом? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2018, 09:45 |
|
Теоретический вопрос. Что лучше StringBuilder или List<string> ?
|
|||
---|---|---|---|
#18+
Petro123это быстрее чем сложить плюсом? Это тоже самое. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2018, 09:46 |
|
Теоретический вопрос. Что лучше StringBuilder или List<string> ?
|
|||
---|---|---|---|
#18+
hVosttCat2, При малом количестве строк String.Concat быстрее. При большом (больше ~5-10), уже быстрее StringBuilder. Если количество строк известно на момент компиляции, либо в рантайме будем иметь string[], то String.Concat однозначно быстрее. Если будем иметь IEnumerable<T>, то лучше использовать String.Concat, он прячет в себя всю кухню со StringBuilder и несколько оптимизирован. Если складываем в цикле заранее неизвестное количество строк, то лучше StringBuilder. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2018, 11:23 |
|
Теоретический вопрос. Что лучше StringBuilder или List<string> ?
|
|||
---|---|---|---|
#18+
Petro123Dima TЕще для ускорения можно задействовать String.Concat (String, String, String, String) это быстрее чем сложить плюсом? Прикол в том, что у string нет перегруженного оператора "+" - конструкция типа "s1 + s2" самим компилятором превращается в "String.Concat(s1, s2)". Сам совершенно случайно и неожиданно узнал это, только через 10 с лишним лет писательства на шарпе, при декомпиляции какой-то хрени :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2018, 11:43 |
|
Теоретический вопрос. Что лучше StringBuilder или List<string> ?
|
|||
---|---|---|---|
#18+
fkthat, Не поверишь, но его нет и например у Int32 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2018, 11:47 |
|
Теоретический вопрос. Что лучше StringBuilder или List<string> ?
|
|||
---|---|---|---|
#18+
ЕвгенийВЕсли будем иметь IEnumerable<T>, то лучше использовать String.Concat, он прячет в себя всю кухню со StringBuilder и несколько оптимизирован. Если складываем в цикле заранее неизвестное количество строк, то лучше StringBuilder. Хм, интересно, а когда в IEnumarable у нас стало «заранее известное» количество строк? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2018, 11:51 |
|
Теоретический вопрос. Что лучше StringBuilder или List<string> ?
|
|||
---|---|---|---|
#18+
fkthatПрикол в том, что у string нет перегруженного оператора "+" - конструкция типа "s1 + s2" самим компилятором превращается в "String.Concat(s1, s2)". Сам совершенно случайно и неожиданно узнал это, только через 10 с лишним лет писательства на шарпе, при декомпиляции какой-то хрени :-) Ну а по сути-то какая разница, каким образом получился String.Concat из "+"? Компилятор вообще очень многое может оптимизировать, убирать переменные, разматывать циклы и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2018, 11:53 |
|
Теоретический вопрос. Что лучше StringBuilder или List<string> ?
|
|||
---|---|---|---|
#18+
Вообще, чё париться? https://github.com/dotnet/BenchmarkDotNet/blob/master/samples/BenchmarkDotNet.Samples/Framework/Framework_StringConcatVsStringBuilder.cs ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2018, 11:56 |
|
Теоретический вопрос. Что лучше StringBuilder или List<string> ?
|
|||
---|---|---|---|
#18+
Вот результате на одном из рабочих тостеров Код: powershell 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
Выделил переломный момент, где StringBuilder уже быстрее. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2018, 12:05 |
|
|
start [/forum/topic.php?fid=20&msg=39626463&tid=1399429]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
65ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 189ms |
0 / 0 |