Pull to refresh
40
0
Send message

как устроена архитектура MarketData в Финаме

Так а как же она устроена то? C++ с Boost и STL? Всё, весь секрет обработки 47 миллионов инструментов в реалтайме?

В том то и дело - не понятно что профилируете, толи форматтер, толи конкатенатор, толи вообще аллокатор. Кому нужна скорость, каким-нибудь геймдевам, то за лишнюю аллокацию удавятся, хотя бы format_to(). Если руками не хочется писать преобразование числа в символы, то хотя бы std::to_chars.

Ещё забыли классику - char buf[1024] /* Должно хватить :-) */; snprintf(buf, sizeof(buf), ...; return std::string(buf). Можете добавить в бенчмарк для общей статистики?

std::format меделнный, потому что в runtime всё делает.
Можете для эксперимента добавить вариант на популярной библиотеке {fmt} с compile-time выражением?

#include <fmt/format.h>
#include <fmt/compile.h>

std::string make_answer_fmt(std::string_view str_answer, int count) {
    return fmt::format(FMT_COMPILE("The answer is {}, count is {}"), str_answer, count);
}

Я тоже так подумал - это про OpenCV как-то, чтобы на изображении что-то искать.

Можно я, например, Pool поревьюирую? Я понимаю, что это не полная реализация, но всё равно, мимо косяков пройти не могу.

  1. Аллокация new uint8_t[count * sizeof(T)] будет гарантировать выравнивание по alignof(std::max_align_t). А что если я в T напихаю каких-нибудь __m256?
    В C++17 надо вот так написать new (std::align_val_t{alignof(T)}) uint8_t[count * sizeof(T)];

  2. reinterpret_cast<FreeNode*> - классический UB.
    В старых C++ надо вот так new (node) FreeNode{m_free_list};
    В C++23 уже вот так можно auto* node = std::start_lifetime_as<FreeNode>(m_buffer + i * sizeof(T));

  3. Деструктор забыли, хотя это просто демо. Не забываем, что мы же выравненный new делали!
    ~Pool() { ::operator delete[](m_buffer, std::align_val_t{alignof(T)}); }

Говорят (за что купил за то и продаю), что тех, кто приезжает в гости на Родину, заводят в комнатку и несколько часов проводят беседы. Итого, чтобы продолжить свой путь обратно, надо написать статьи и/или выложить ютубы про загнивающий запад, как там всё плохо, и туда ехать не надо. Иначе, если не выполнить это требование, то пересечение границы закрывается.

Библиотека https://github.com/TartanLlama/expected позволяет использовать std:expected ещё с C++11, до официального появления в стандарте C++23.

Что же вы не указали, как с появлением концептов в C++20, SFINAE конструкции уже сильно устарели, и синтаксис концептов сильно лучше читаем.

Публикация должна была выйти первого апреля.

Надо было сразу просить написать на ассемблере, и без функций, без именования переменных, всё сплошником.

Возможно из за выбора ИИ моделей из не самых топовых. Как бы и на думающих дорогих моделях ИИ знатно косячит, но тут эталон бездарности.

Любой современный компилятор имеет "format string checking", например, в gcc/clang -Wformat, так что более-менее тоже type-safety.
Кстати, когда вы пишете свой логгер, который принимает форматирование в формате printf, то следует обложить атрибутом __attribute__((format(printf, ...))), тогда компилятор и тут проверит аргументы и типы.

process(Config* config)

Если передавать как ссылку, то и проверять на Nullptr не надо ;-)

Очень часто приходим к тому, что простой остановки программы недостаточно, а нужно куда-то сохранить информацию об ассерте

Assert вызовет abort(), тот посылает SIGABRT, и по-умолчанию создаётся core dump.
Обычно вы запускаете программу/демон из какой-то обёртки на shell/python, и если программа завершила аварийно, то можно посмотреть создалась ли кора, и зайти gdb bt, и прислать, например, на email.

Классика же, сравнивать с snprtinf(), забыли?

Каждый год выходит по несколько очередных "убийц" C++. Что-то пока ни как не взлетит. Где сейчас язык D?

UPD 2019: Для 64-битный билдов они перешли на Lazarus, но для 32-бит всё ещё на старом Delphi, потому что делает компактные .exe.

Чтобы самому не изобретать TUI-велосипеды, и не связываться с ncurses, а писать на современном C++, предлагаю взять готовую библиотеку https://github.com/ArthurSonzogni/FTXUI

По факту не готово.
C++ compiler support Standard Library Modules (FTM)* P2465R3

GCC libstdc++ 15*

Clang libc++ 17 (partial)*

MSVC STL 19.35* (partial)*

Apple Clang* 19.36*

1
23 ...

Information

Rating
6,175-th
Registered
Activity