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

На C++R2023 в докладе Антона была TrivialBiMap по аналогии с

LLVM.
А как решать задачу, если целевой компилятор - MSVC, в подобные оптимизации умеющий крайне плохо?
Нужно отобразить десяток-другой коротких строк в числа и обратно.

12 ответов

39 просмотров

ну сделайте нужную часть на Clang или icx

Может frozen подойдёт, там вроде в compile time perfect hash строится. Хотя десяток-другой это можно и перебором, даже без всяких оптимизаций.

Dmitry Sokolov
Может frozen подойдёт, там вроде в compile time pe...

Да оно норм работает, но это O(длины строки). Но если важно, можно обычно лучше написать, засчет того что размер строк обычно разный. То есть switch по размеру + switch по 1 букве хватает для большинства константных строк. Но это нужно вручную писать :(

Arelav
Да оно норм работает, но это O(длины строки). Но е...

В данном случае вообще всё сводится к предположению что msvc не умеет в оптимизации :) И думаю надобность в оптимизациях тоже только предположение.

Arelav
Да оно норм работает, но это O(длины строки). Но е...

Ну и да, на небольших наборах простой цикл наверное быстрее работает потому что сразу отбрасываются не проходящие по размеру и memcmp делается только на равных по размеру строках. И даже если их не один, это всё равно может быть быстрее чем хэш.

Arelav
Да оно норм работает, но это O(длины строки). Но е...

Хм... я кстати до конца не разбирался. Но там случаем не FNV? Я вот подумал это очень плохой хэш для того чтобы быть perfect.

Arelav
Да fnv

Он же не просто O, он дорогой, там умножения

Dmitry Sokolov
Он же не просто O, он дорогой, там умножения

Ну относительно, но да, какой нибудь wyhash/city64 дешевле

Arelav
Ну относительно, но да, какой нибудь wyhash/city64...

Не, fnv это точно не для pfh :) Это если не заморачиваться как в gperf. Самый простой вариант это нагенерить рандом с которым вход можно просто поксорить.

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта