RattenKong 🦧🐀🦍️
index - индекса бита который хотим взять
ivn
а, ну там тогда byteNum и bitNum как будто перепутаны
🐙 Antony
Кстати, а никто не исследовал, почему std::mutex и std::timed_mutex не реализованы вот так: https://patchwork.freedesktop.org/patch/41241/ Вроде бы ничего не мешает, а автор обещает 10% прирост производительности?
RattenKong 🦧🐀🦍️
а, ну там тогда byteNum и bitNum как будто перепутаны
лоло, похоже на магию которую я не помню, надо будет пересмотреть кодес и литературу перечитать
Alexander
Кстати, а никто не исследовал, почему std::mutex и std::timed_mutex не реализованы вот так: https://patchwork.freedesktop.org/patch/41241/ Вроде бы ничего не мешает, а автор обещает 10% прирост производительности?
Так pthread мьютексы, да и вообще все так реализованы (cmpxchg в fast path или futex syscall). Вроде вся идея только в том, чтобы убрать вызов функции через указатель, и выкинуть все сложные кейсы (типа таймаута, рекурсии)
🐙 Antony
Всё верно, идея в том, чтобы оставить самый минимум и позволить инлайниться. Меня 10% прироста производительности завораживают, ничего не могу с собой поделать...
melvin
есть чат по си?
Danil
есть чат по си?
православного нет
Danil
здесь все вместе
Danil
но большинство сиплюсплюсники
Aidar
Странно ведь это про.схх
Anonymous
melvin
union в C можно использовать для динамичесого предстваления типа данных?
melvin
т.е. связка из метки типа + union всех возможных типов
Berkus
🐙 Antony
т.е. связка из метки типа + union всех возможных типов
Да, так многие делают. В С++ std::variant релизован приблизительно так же
melvin
а есть альтернативы?
melvin
если говорить только об Си
Berkus
можно держать tag + pointer
Berkus
и маллокать нужный тип
RattenKong 🦧🐀🦍️
не очень, там % 2 вместо & 1
Дада, еще сдвиги вместо делений умножений
Berkus
всякое барахло до sizeof(pointer) можно сувать прямо туда как values
ivn
а есть альтернативы?
например в исходниках Python 2.7 можно посмотреть реализацию PyObject и всех остальных типов
melvin
я сейчас просто 3ую ветку ковыряю
ivn
я просто не знакю как в ветке 3+ они сделали
melvin
понял, спасибо
🐙 Antony
Дада, еще сдвиги вместо делений умножений
Это всё компилятор соптимизирует. Можно не заморачиваться, если делите/умножаете на константу
Evgenii
не очень, там % 2 вместо & 1
компилятор разберется
Berkus
да я знаю что разберется
Berkus
с -O0 правда затупит
Evgenii
впрочем в данном случае &1 просто логичнее
🐙 Antony
в теории - да :)
🦥Alex Fails
🦥Alex Fails
GitHub - rkapsi/patricia-trie: Practical Algorithm to Retrieve... github.com PATRICIA Trie. Practical Algorithm to Retrieve Information Coded in Alphanumeric. The PATRICIA Trie is also known under the names Radix and Crit Bit Tree.
🦥Alex Fails
Radix tree - Wikipedia en.wikipedia.org Donald R. Morrison first described what he called "Patricia trees" in 1968;[4] the name comes from the acronym PATRICIA, which stands for "Practical Algorithm To Retrieve Information Coded In...
Vladislav
если index - это бит, то почему не byteNum = index / 8 (или >> 3, если хочется)?
RattenKong 🦧🐀🦍️
лоло, похоже на магию которую я не помню, надо будет пересмотреть кодес и литературу перечитать
RattenKong 🦧🐀🦍️
И тогда вопрос, как оно работало корректно
RattenKong 🦧🐀🦍️
Надо будет затестить лоло
Berkus
ну это похоже просто неверная имплементация )
Berkus
перезаписывала память где-то далекооо
Berkus
(ну или читала)
Vladislav
😀
RattenKong 🦧🐀🦍️
я на достаточно нормальных тестах тестировал
RattenKong 🦧🐀🦍️
Короче буду разбиратьчя
Berkus
пример теста есть?
RattenKong 🦧🐀🦍️
просто запросы на удаление и поиск
RattenKong 🦧🐀🦍️
И вставку
RattenKong 🦧🐀🦍️
С разной длины строками
RattenKong 🦧🐀🦍️
Короче, пока не затещу ничаво не скажу!
Berkus
да тут вопрос про тест функции теста этого бита )
Vladislav
ну малоль, там отображение памяти закольцовано
Vladislav
всяко бывает :)
RattenKong 🦧🐀🦍️
я исходил их того, что раз работает интерфейс, то и внутренние функции работают
RattenKong 🦧🐀🦍️
Ну и в такой функции трудно ошибиться(но можно ;-))
Vladislav
simon the shame 😀
Animal
Кто -нибудь работал с boost.property tree? Как и чем вы сравнивали два дерева?
Animal
Если быть чуть точнее, то как и чем сравнивать два дерева, в которых порядок нодов не совпадает
Animal
Но уровень вложенности и содержимое совпадают
Animal
Встоонный sort и стандартный operator == не помогают
Animal
Самописный компаратор тоже
Andrei
Руками, рекурсивно.
Andrei
И довольно неоптимально выйдет, если чо.
Andrei
Если нужно именно сравнение, предлагаю написать хешер.
Animal
Как вариант, но что бы не напороться на несовпадающий порядок придется элементы первого дерева искать по тем же путям во втором. Что не избавляет от проблемы, когда первое только подмножество второго
Andrei
И сравнивать хеши.
Andrei
Пренебречь.
Daniil
тогда уже сравнивать руками))
Berkus
при коллизии сравнивать ручками рекурсивно лоль
Animal
Хэш - уже лучше
Александр
хэш имеет смысл, если сравнивать часто и много, а также много false'ов
Andrei
Нет, просто забить на сравнение руками и использовать только хеши. Взять просто подлиннее. И хешировать правильно.
Animal
Спасибо всем за обсуждения и Андрею в особенности за идею с хэшом