Самый эффективный способ связать строки?

pip install configparser
sudo cp /usr/lib/python3.6/configparser.py /usr/lib/python3.6/ConfigParser.py

Затем попробуйте снова установить MYSQL-python. Это работало для меня

270
задан Alex Angas 17 September 2016 в 14:41
поделиться

8 ответов

StringBuilder.Append() метод намного лучше, чем использование + оператор. Но я нашел, что, при выполнении 1 000 конкатенаций или меньше, String.Join() еще более эффективно, чем StringBuilder.

StringBuilder sb = new StringBuilder();
sb.Append(someString);

единственная проблема с String.Join состоит в том, что необходимо связать строки с общим разделителем. (Редактирование:) как @ryanversaw указанный, можно сделать строку разделителя. Пустой.

string key = String.Join("_", new String[] 
{ "Customers_Contacts", customerID, database, SessionID });
148
ответ дан Yousha Aleayoub 23 November 2019 в 02:18
поделиться

Это зависело бы от кода. StringBuilder обычно более эффективен, но если Вы только свяжете несколько строк и сделаете все это в одной строке, оптимизация кода будет, вероятно, заботиться о нем для Вас. Важно думать о том, как код смотрит также: для больших наборов StringBuilder облегчит читать для маленьких, StringBuilder просто добавит бесполезную помеху.

0
ответ дан Jon Dewees 23 November 2019 в 02:18
поделиться

Всего для двух строк Вы определенно не хотите использовать StringBuilder. Существует некоторый порог, выше которого StringBuilder наверху является меньше, чем издержки выделения нескольких строк.

Так, для больше, что 2-3 строки, использование код DannySmurf . Иначе просто используйте + оператор.

0
ответ дан Community 23 November 2019 в 02:18
поделиться

Самое эффективное должно использовать StringBuilder, как так:

StringBuilder sb = new StringBuilder();
sb.Append("string1");
sb.Append("string2");
...etc...
String strResult = sb.ToString();

@jonezy: Строка. Concat прекрасен, если у Вас есть несколько мелочей. Но если Вы свяжете мегабайты данных, Ваша программа, вероятно, заправит.

2
ответ дан TheSmurf 23 November 2019 в 02:18
поделиться

От этого статья MSDN:

существуют немного служебные связаны с созданием объекта StringBuilder, и вовремя и память. На машине с быстродействующей памятью StringBuilder становится стоящим при выполнении приблизительно пяти операций. Как показывает опыт, я сказал бы, что 10 или больше строковых операций являются выравниванием для издержек на любой машине, даже более медленная.

Поэтому, если Вы доверяете, MSDN идет с StringBuilder, если необходимо сделать больше чем 10 строковых операций/конкатенаций - в других отношениях простая строка concat с '+' прекрасна.

6
ответ дан JohnIdol 23 November 2019 в 02:18
поделиться

Если Вы действуете в цикле, StringBuilder является, вероятно, способом пойти; это сохраняет Вас издержки создания новых строк регулярно. В коде это будет только работать однажды, тем не менее, Строка. Concat прекрасен, вероятно.

Однако Rico Mariani (гуру оптимизации.NET) составил тест , в котором он заявил в конце, что в большинстве случаев рекомендует Строку. Формат.

11
ответ дан Yousha Aleayoub 23 November 2019 в 02:18
поделиться

От Chinh Делают - StringBuilder не всегда быстрее :

Эмпирические правила

  • При конкатенации трех динамических строковых значений или меньше, используйте традиционную конкатенацию строк.

  • При конкатенации больше чем трех динамических строковых значений, используйте StringBuilder.

  • При создании большой строки из нескольких строковых литералов, используйте или строковый литерал или встроенное + оператор.

Большинство из времени StringBuilder является Вашим лучшим выбором, но существуют случаи как показано в том сообщении, что необходимо, по крайней мере, думать о каждой ситуации.

54
ответ дан Yousha Aleayoub 23 November 2019 в 02:18
поделиться

Rico Mariani , гуру Производительности.NET, имел статья об этом очень подвергающемся. Это не столь просто, как можно было бы подозревать. Основной совет - это:

, Если Ваш шаблон похож:

x = f1(...) + f2(...) + f3(...) + f4(...)

это - один concat, и это быстро, StringBuilder, вероятно, не поможет.

, Если Ваш шаблон похож:

if (...) x += f1(...)
if (...) x += f2(...)
if (...) x += f3(...)
if (...) x += f4(...)

тогда Вы, вероятно, хотите StringBuilder.

еще одна статья для поддержки этого заявления появляется от Eric Lippert, где он описывает оптимизацию, выполненную на одной строке + конкатенации подробным способом.

264
ответ дан Todd Ropog 23 November 2019 в 02:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: