Size: a a a

2020 August 12

D

Dim in pro.algorithms
я просто сравнил время выполнения xor от 1000 байт
источник

D

Dim in pro.algorithms
в 8ми разрядной и 32 раздяной математике
источник

D

Dim in pro.algorithms
в 4 раза быстрее
источник

D

Dim in pro.algorithms
понятное дело xor я тоже брал 32х разрядный
источник

BV

Boris Vinogradov in pro.algorithms
брр
источник

D

Dim in pro.algorithms
так объясните мне почему алго 32 работает с каждым байтом отдельно?
источник

D

Dim in pro.algorithms
если версия 32х битная
источник

MS

Mikola Summer Duck in pro.algorithms
Dim
так объясните мне почему алго 32 работает с каждым байтом отдельно?
Какой алго
источник

D

Dim in pro.algorithms
источник

D

Dim in pro.algorithms
вот это зачем нужно:
     (Te4[(temp >> 16) & 0xff] & 0xff000000) ^
       (Te4[(temp >>  8) & 0xff] & 0x00ff0000) ^
       (Te4[(temp      ) & 0xff] & 0x0000ff00) ^
       (Te4[(temp >> 24)       ] & 0x000000ff) ^
источник

D

Dim in pro.algorithms
это же побайтная обработка!
источник

A

Aragaer in pro.algorithms
потому что это эквивалентно побайтной обработке, но на реальных процессорах вполне могут оказаться инструкции, которые ровно вот это делают совсем иначе
источник

A

Aragaer in pro.algorithms
например на powerpc я видел инструкцию "сделать сдвиг и наложить маску". Тогда тут было бы четыре вызова этой инструкции плюс ксоры. Но эта инструкция принимает 32-битное слово, а не один байт
источник

D

Dim in pro.algorithms
Aragaer
потому что это эквивалентно побайтной обработке, но на реальных процессорах вполне могут оказаться инструкции, которые ровно вот это делают совсем иначе
по твоему мнению тут оптимизация очевидна по сравнению с 8ми битной версией?
источник

D

Dim in pro.algorithms
источник

D

Dim in pro.algorithms
вот она
источник

A

Aragaer in pro.algorithms
В данном случае она по крайней мере не хуже наивного побайтного подхода.
источник

D

Dim in pro.algorithms
а именно?
источник

A

Aragaer in pro.algorithms
я просто отталкиваюсь от своего опыта, когда я видел реализацию strlen для юникодных строк. Наивная реализация это просто пройтись по байтам, оптимизированная это неоновские интринсики для векторных операций.
источник

A

Aragaer in pro.algorithms
но для векторных операций помимо собственно работы требовалось также сначала инициализировать нужные данные, а в конце выгрести результат. В итоге экспериментально было получено, что для строк длиной менее 13 байт наивная реализация работает быстрее
источник