Warning: mkdir(): No space left on device in /var/www/tgoop/post.php on line 37

Warning: file_put_contents(aCache/aDaily/post/hft_dev/--): Failed to open stream: No such file or directory in /var/www/tgoop/post.php on line 50
Один микросек - C++, low latency, concurrency, HFT@hft_dev P.12
HFT_DEV Telegram 12
Некоторое время назад начал записывать результаты бенчмарков в базу знаний в Obsidian. Спустя год-два ты ведь уже не вспомнишь что быстрее std::to_string или fmt::to_string или my_to_string, и насколько, и почему, и какие инсайты это тебе дало. А если записано, то позже вернёшься и освежишь в памяти.

Для корректности стоит так же записать используемые:
- железо (CPU, RAM, caches)
- окружение (os distribution, kernel, версия используемого компилятора, версия std lib)
- флаги процесса, с котороми запускал бенч (например, для google benchmark использую --benchmark_min_warmup_time=0.1 --benchmark_repetitions=5 --benchmark_report_aggregates_only=1, но со временем привычки могут меняться, и это должно быть записано)
- версии библиотек
- флаги компилятора и линковщика

Например:
--------------------------------
Benchmark Time CPU
--------------------------------
bench_libfmt_mean 45.4 ns 45.4 ns
bench_libfmt_median 45.3 ns 45.3 ns
bench_libfmt_stddev 0.455 ns 0.402 ns

bench_fmt_to_string_mean 23.7 ns 23.7 ns
bench_fmt_to_string_median 23.6 ns 23.6 ns
bench_fmt_to_string_stddev 0.340 ns 0.340 ns

bench_std_to_string_mean 132 ns 132 ns
bench_std_to_string_median 132 ns 132 ns
bench_std_to_string_stddev 0.460 ns 0.445 ns


libfmt: v8.1.1
c++23
g++: v11.4.0


CPU: AMD Ryzen 7 5800U
RAM: DDR4
CPU Caches:
L1 Data 32 KiB (x8)
L1 Instruction 32 KiB (x8)
L2 Unified 512 KiB (x8)
L3 Unified 16384 KiB (x1)
OS: 23.04, kernel 5.15.0-89-generic
Run: `--benchmark_min_warmup_time=0.1 --benchmark_repetitions=5 --benchmark_report_aggregates_only=1`


По сему получается, fmt::to_string заметно шустрее.

Чего не хватает в моей реализации записок:
- Иногда не храню исходник самого бенча. Через год уже и не вспомнишь, что подавал на вход, что конкретно мерил, и не сделал ли ошибок.
- Не автоматизирован сбор данных об окружении.
- На записаны флаги компиляции.
👍5



tgoop.com/hft_dev/12
Create:
Last Update:

Некоторое время назад начал записывать результаты бенчмарков в базу знаний в Obsidian. Спустя год-два ты ведь уже не вспомнишь что быстрее std::to_string или fmt::to_string или my_to_string, и насколько, и почему, и какие инсайты это тебе дало. А если записано, то позже вернёшься и освежишь в памяти.

Для корректности стоит так же записать используемые:
- железо (CPU, RAM, caches)
- окружение (os distribution, kernel, версия используемого компилятора, версия std lib)
- флаги процесса, с котороми запускал бенч (например, для google benchmark использую --benchmark_min_warmup_time=0.1 --benchmark_repetitions=5 --benchmark_report_aggregates_only=1, но со временем привычки могут меняться, и это должно быть записано)
- версии библиотек
- флаги компилятора и линковщика

Например:

--------------------------------
Benchmark Time CPU
--------------------------------
bench_libfmt_mean 45.4 ns 45.4 ns
bench_libfmt_median 45.3 ns 45.3 ns
bench_libfmt_stddev 0.455 ns 0.402 ns

bench_fmt_to_string_mean 23.7 ns 23.7 ns
bench_fmt_to_string_median 23.6 ns 23.6 ns
bench_fmt_to_string_stddev 0.340 ns 0.340 ns

bench_std_to_string_mean 132 ns 132 ns
bench_std_to_string_median 132 ns 132 ns
bench_std_to_string_stddev 0.460 ns 0.445 ns


libfmt: v8.1.1
c++23
g++: v11.4.0


CPU: AMD Ryzen 7 5800U
RAM: DDR4
CPU Caches:
L1 Data 32 KiB (x8)
L1 Instruction 32 KiB (x8)
L2 Unified 512 KiB (x8)
L3 Unified 16384 KiB (x1)
OS: 23.04, kernel 5.15.0-89-generic
Run: `--benchmark_min_warmup_time=0.1 --benchmark_repetitions=5 --benchmark_report_aggregates_only=1`


По сему получается, fmt::to_string заметно шустрее.

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

BY Один микросек - C++, low latency, concurrency, HFT


Share with your friend now:
tgoop.com/hft_dev/12

View MORE
Open in Telegram


Telegram News

Date: |

With the administration mulling over limiting access to doxxing groups, a prominent Telegram doxxing group apparently went on a "revenge spree." Content is editable within two days of publishing In 2018, Telegram’s audience reached 200 million people, with 500,000 new users joining the messenger every day. It was launched for iOS on 14 August 2013 and Android on 20 October 2013. You can invite up to 200 people from your contacts to join your channel as the next step. Select the users you want to add and click “Invite.” You can skip this step altogether. Select “New Channel”
from us


Telegram Один микросек - C++, low latency, concurrency, HFT
FROM American