170 похожих чатов

Допустим, у меня два десятка строк. Конструкции типа cmd += fmt.Sprintf("xxx=%s,",

x)
я перевел частично на стрингбилдер
sb.WriteString(fmt.Sprintf())

Вопрос, а насколько дорого обходится Sprintf?
Есть ли смысл идти дальше, доводить до абсурда типа
sb.WriteString("xxx=")
sb.WriteString(x)
sb.WriteString(",")
??

22 ответов

32 просмотра

> насколько дорого примерно на 3.58

енот- Автор вопроса
Dmitry
> насколько дорого примерно на 3.58

насколько дорого относительно приведенной ниже конструкции со WriteString?

Напишите бенчмарк

Это не доводить до абсурда, это то как билдер билдит.

а вочему это вообще важно? вы не пробовали померять, какую часть ресурсов ваши довольно неэффективные строковые операции отъедают? (никакую) PS cmd += fmt.Sprintf("xxx=%s,", x) - это плохо cmd = fmt.Sprintf(“%sxxx=%s,", cmd, x) - лучше

Daniel Podolsky
а вочему это вообще важно? вы не пробовали померя...

лучше-хуже тоже спорно. есть оптимизации ж. меряяять над, а без измерений - 3.58 самый верный ответ.

Dmitry
лучше-хуже тоже спорно. есть оптимизации ж. меряяя...

не, там бесспорно, там лишняя аллокация всплывает

Daniel Podolsky
не, там бесспорно, там лишняя аллокация всплывает

хо хо. сегодня "вслывает", а завтра компилер подпилят под такие кейсы и не будет - только мерять. Я вам могу показать на .net где один и тот же код компилится совсем в разное (как раз про строки) - оптимизатор делает своё дело (за гошку не скажу так сразу - ибо не изучал). вот статья о .net - не думаю что подобное невозможно (или не будет возможно) в го.

Dmitry
хо хо. сегодня "вслывает", а завтра компилер подпи...

ну вот как оптимизатор начнет это оптимизировать - так и поговорим. но - не начнет, потому что, повторюсь, на интегральную производительность это не влияет никак

Daniel Podolsky
ну вот как оптимизатор начнет это оптимизировать -...

ну ок, не хотите чтобы тесты падали - не пишите тесты - тоже вариат, чо.

не все мнения едины мне подход что когда то за горизонтом планирования что то измениться неблизок

d. one-man
не все мнения едины мне подход что когда то за гор...

мне проще написать бенч, загнать его в ci и смотреть на график графаны + добавить алерты если надо чем "думать вот это всё".... хотя из коробки, конечн, снапшотинга бенчмарков нету

а где вы там учитали про .net / cpp ? в том сообщении что процитировали

Евгений Омельченко
> есть оптимизации

ну например для разных типов есть оптимизации в fmt sprintf - это я по-памяти, мож еще что накрутили, а может еще накрутят. я не понимаю: вы не любите бенчи или что?)

softland Виталий Сергиенко
я нет ))

а я инженер и предпочитаю не тыкать пальцем в небо, а проверить гипотезу тестом.

А зачем доводить до абсурда Используй и билдер и fmt Есть же fmt.Fprintf, пиши им в буфер стринг билдера напрямую. var b strings.Builder b.Grow(32) // ну или сколько тебе там надо fmt.Fprintf(&b, "xxx=%s”, x)

O. J.
А зачем доводить до абсурда Используй и билдер и ...

Вот это как раз абсурд. Делать grow на скорее всего не оптимальную величину вместо writestring который оптимальный.

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

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта