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

Есть идеи, как соптимизировать? void transform_linear(uint64_t block[8]) {

uint64_t res[8];
fill_with(res, 0); // заполняет нулями
for (int bit = 0; bit < 64; ++bit) {
for (int i = 0; i < 8; ++i) {
res[i] ^= ((block[i] >> (64 - bit - 1)) & 1) * l_matrix[bit];
}
}
copy_block(block, res); // копирует res в block
}
l_matrix[i] почти случайное

14 ответов

26 просмотров

1. Поставь оптимизацию О2. Посмотри на ассемблер. Потом замени bit и int на unsigned, потому что они очевидно unsigned. std::move блок вместо копирования(не знаю уж как на стеке, но че нить такое), Переверни цикл наизнанку, то есть для каждого i сразу проводи 64 операции умножения не пересчитывая и не перетаскивая из другой возможно части памяти инфу по 64 раза

лубая возня с битами, это либо готовые (заранее) таблицы смотри любой CRC либо работа с целыми интами\байтами за раз, чтоб убрать итерацию хотябы по битам в байте

Dmitriy [Отпуск]
move для 8 интов?

псевдомув какой то чтобы не было копирования вообще, ну тут надо математически разобраться что вообще происходит

Pablo-K Автор вопроса
Kelbon
псевдомув какой то чтобы не было копирования вообщ...

Скалярное произведение строчки матрицы на двоичный вектор

Kelbon
псевдомув какой то чтобы не было копирования вообщ...

Здесь копирование - вообще последнее, что подлежит оптимизации. Солидарен с @KoynovStas

Надеюсь, в copy_block находится memcpy?

Pablo-K Автор вопроса
Stas Koynov
лубая возня с битами, это либо готовые (заранее) т...

Где можно почитать, как таблички эти делают?

Pablo-K Автор вопроса
Pablo K
Где можно почитать, как таблички эти делают?

берёшь все возможные варианты своей ебанины прогоняешь по твоему алгоритму записывая результат и делаешь самую большую и бесполезную таблицу в истории хДД

Pablo-K Автор вопроса
Pablo K
Где можно почитать, как таблички эти делают?

эмм, ну смотри если у тебя есть, итерация по байту(битам байта)! значит ты можешь где-то один раз сделать результат для x байта. их всего 256 штук будет. дальше зная байт, ты знаешь рузультат. говорю попробуй разобрать самый простой табличный црц 8 битный который. а так если возня с битами, то есть книжка: Алгоритмические трюки для программистов 2014 Генри С. Уоррен

Pablo-K Автор вопроса
Stas Koynov
эмм, ну смотри если у тебя есть, итерация по байту...

Да, действительно, протупил. Попробую сделать, спасибо.

Kelbon
псевдомув какой то чтобы не было копирования вообщ...

Кажется, стоит разобраться в мув семантике, а потом давать такие советы

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
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
Карта сайта