Alexander "SonnySlave"
то есть на Си он просто взял и написал, а на крестах написал, а потом оптимизировать ещё сел
🦥Alex Fails
ну, автор сразу в плюсах использует фичи, которые тяжелые
🦥Alex Fails
виртуализация и исключения
🦥Alex Fails
в сишном коде такого оверхеда нету по определению
🦥Alex Fails
и еще если юзать смарт-птры, то они тоже в дин. память лезут - это аллокации дополнительные
Oleg
то есть на Си он просто взял и написал, а на крестах написал, а потом оптимизировать ещё сел
Он еще охренел править сишную версию от багов. Для академических проектов это все круто, но мы живем в мире сурового тырпрайза.
Oleg
Плюсы хороши доя общих случаев. Если тебе надо дрочить на скорость - не используй стл - пиши свои абстракции на нужные тебе типы и свои аллокаторы.
RaFaeL
Добрый вечер Извините, это я снова со своими детскими тупыми вопросами typedef struct lxw_chart { FILE *file; uint8_t type; uint8_t subtype; uint16_t series_index; void (*write_chart_type) (struct lxw_chart *); void (*write_plot_area) (struct lxw_chart *); lxw_chart_axis *x_axis; lxw_chart_axis *y_axis; мне нужно имея значение адреса в памяти этой структуры получить значения *x_axis и *y_axis так как апи такое не возвращает, только может принимать в других методах эти значения. Сколько прибавить? вот этот вот void (*write_chart_type) (struct lxw_chart *) совсем непонятно сколько
RaFaeL
выравнивание по 4 байта
Kirill
Это всё надо держать в голове
Зайцев все это понимает и просто тролит :)
RaFaeL
не знаю, я не знаю С ))
Alexander "SonnySlave"
🦥Alex Fails
Зайцев все это понимает и просто тролит :)
а, ок, норм. Но не все знают, поэтому я уточняю)
RaFaeL
спасибо, посчитал )
Kirill
ну что ты контору палишь
Вдруг тебя кто особо чувсвительный запомнит и на спп раша попытается убить :)
Alexander "SonnySlave"
@crackedmind первый в очереди, наверное 😊
kitsu
Есть тулы valgrind-а , которые выдают список функций и сколько времени каждый вызов исполнялся? Чего-то в callgrind+kcachegrind ничего такого не вижу
kitsu
Ну или не валгринд, если есть еще чего вменяемое с динамической инструментацией
kitsu
Ну или может быть есть еще что-нибудь +/- готовое для отслеживания критических секций. Код чего-то после апдейта либ подозрительно долго начал работать
Matwey
Господа
Matwey
Позвольте опрос
🦥Alex Fails
давай
Matwey
Кто пользуется тем, что argv[argc]==NULL, а кто считает аргументы по argc?
Matwey
int main(char** argv, int argc)
🦥Alex Fails
Кто пользуется тем, что argv[argc]==NULL, а кто считает аргументы по argc? anonymous poll Считаю по argc – 120 👍👍👍👍👍👍👍 93% Оба варианта – 6 ▫️ 5% Пользуюсь этим равенством – 3 ▫️ 2% 👥 129 people voted so far.
🦥Alex Fails
там еще обновил всякие каналы, гляньте, если кто не заметил
🦥Alex Fails
алсо, в тему argc/argv. Тут в супаро обсуждали итератор по null-terminated arrays. Ща подкину вам линкоты на эту тему: https://t.me/supapro/205935 #faq #argc #iterator
Vsevolod
for (;*argv != NULL; argv ++) :)
🦥Alex Fails
for (;*argv != NULL; argv ++) :)
можно и так, д
Matwey
for (;*argv != NULL; argv ++) :)
Ну это подразумевает, что список терменирован нулем
Vsevolod
а он чо?
Vsevolod
мы же про argv
Matwey
Ну, т.е. ты неявно используешь что argv[argc] == NULL
Vsevolod
неа
Vsevolod
я argc вообще не использую
Vsevolod
argc для слабаков!
kitsu
Callgrind делает именно это
Количество инструкций увидел, а время на выполнение - нет
Vsevolod
@kitsu я google-perftools использовал
Vsevolod
хотя в последнее время все больше perf
Matwey
Я имею ввиду, что есть некоторая избыточность информации. С одной стороны число элементов argv задается нам извне отдельной переменной, с другой стороны этот список сам по себе NULL-terminated. А вот вообразим, теперь, что разное число элементов получится при подсчете двумя способами?
Alexander "SonnySlave"
или там и по времени есть... не помню уже
Vsevolod
@matwey_kornilov ну просто ты можешь сказать if (argc < 3) { printf("читай ман, чюрка тупая\n"); return -1; }
Vsevolod
а это многого стоит
Vsevolod
особенно учитывая, что аргументов у тебя может быть сто тысяч в линупсе
Berkus
и для таких мест как показывает статья, Си лучше
четырежды два плюса этому сишнику со стажем!
Alexander "SonnySlave"
Вон даже @berkus подтверждает, что Си лучше
Alexander "SonnySlave"
а беркус фигни не скажет
🦥Alex Fails
++
🦥Alex Fails
Ilya
Количество инструкций увидел, а время на выполнение - нет
Там проценты от общего времени выполнения
kitsu
там процент по инструкциям, а не по времени
Matwey
особенно учитывая, что аргументов у тебя может быть сто тысяч в линупсе
может быть больше, я помню у меня на каком-то ядре падало при 131 тысяче аргументов, а потом стало больше понимать
Vsevolod
это настраивается
Ilya
Matwey
главное чтобы сил хватило все эти аргументы вбивать в строку запуска!
Как раз падало при какой-то компиляции чего-то хитрого. Где Makefile вбил компилятору миллионы параметров
✙ Fatum ✙
я наверное в танке, но вот: https://github.com/Reactive-Extensions/RxCpp ничего себе. не знала, что оно с++ поддерживает! какая няшность
✙ Fatum ✙
я таки в танке
Berkus
оно правда там синтаксически немношко адово, т.к. плюсцы, но работает... большую часть времени
Berkus
игрался только
Anatoly
ты пробовал?
у меня в продакшене
✙ Fatum ✙
у меня в продакшене
и как? оправдывает себя?
Berkus
ты пробовал?
мне потом какая-то другая реактивная либа понравилась больше, но у нее тоже были проблемс
✙ Fatum ✙
просто у нас тут микросервисы, и есть высоконагруженные тоже
Anatoly
и как? оправдывает себя?
ну, единообразная обработка стримов конечно оправдывает