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

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

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

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

22 ответов

20 просмотров

> насколько дорого примерно на 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 и смотреть на график графаны + добавить алерты если надо чем "думать вот это всё".... хотя из коробки, конечн, снапшотинга бенчмарков нету

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

> есть оптимизации Вы чатиком не ошиблись?

а где вы там учитали про .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 который оптимальный.

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

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

Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
База данных не поможет. Шифрование не поможет. Какие там ещё варианты? Накидывайте.
КТ315
20
А табстоп это сообщение от окна или от элемента управления?
The Bird of Hermes
18
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
Открыл свой двухкилобайтный экзешник в x32dbg, а тут какая-то хрень. Смущает кнопка "выполнить до пользовательского кода", а что ещё может быть в файле помимо него ?
НѣкъиⰘижєжєиꙁъвьсєсвѣтьноѣсѣтиѥсть•
11
Мне были интересны дишные хаки и я нашёл любопытный способ на форуме через __traits, что-то вроде int delegate(int) fac = (int n) => n == 0 ? 1 : n * __traits(parent, {})(n - ...
Constantin F.
1
Всем привет, подскажите/посоветуйте пожалуйста. Фаердак компоненты, имею одно место где бизнес хочет видеть при открытии формы список всех клиентов, это порядка 30к. Мои дово...
Sasha Sch
14
Вопрос тем кто смотрит видео и слушает подкасты - как вы потом ищете нужную вам информацию? Вот статью я прочитал, потом могу искать нужную мне часть банальным поиском. Пропус...
Aleksandr Druzhinin
4
Ребят, если кто в курсе - скажите, а в загранке такое же засилье маркетплейсов? или там простые сермяжные интернет-магазины живут попроще?
Андрей [aharito] Харитонов
14
Хотел бы спросить у знающих, правильную ли я выбрал книгу для начала изучения ассемблера Юрова В.И ? Или есть более лучшие книги для начала обучения?
Botsman
31
Карта сайта