|
68 / 33 / 11
Регистрация: 18.07.2014
Сообщений: 263
|
|
Побитовые операции с памятью16.03.2020, 18:01. Показов 12623. Ответов 150
Метки нет (Все метки)
Есть ли в Delphi какие-нибудь функции чтобы побитово сделать and or xor not с двумя произвольными кусками памяти? Можно чтобы это были обязательно два равных по длине куска, неважно.
Например для сравнения двух кусков есть очень быстрая функция CompareMem.
0
|
|
| 16.03.2020, 18:01 | |
|
Ответы с готовыми решениями:
150
Побитовые операции Побитовые операции побитовые операции |
|
240 / 218 / 46
Регистрация: 17.04.2010
Сообщений: 526
|
||||||||||||||||||||||
| 01.04.2020, 19:30 | ||||||||||||||||||||||
И еще. Я бы убрал из замера подготовку семпла, это обычно делается один раз, а поиск может быть выполнен многократно.
0
|
||||||||||||||||||||||
|
4195 / 1841 / 223
Регистрация: 06.10.2010
Сообщений: 4,127
|
|
| 01.04.2020, 20:06 | |
|
Naive SSE2 даёт неплохой результат на сэмпле без прозрачных пикселей вначале.
По AVX2 не уверен, т.к. в сети много упоминаний о том, что vgatherdps - это жуткий тормоз и не даёт профита вообще. Ну ещё на производительность может повлиять тот факт, что мне пришлось разбить массив smp на 2 массива: один для индексов, другой для цветов (наверное теперь процессор не может нормально закэшировать эти массивы). Как видим на процессорах AMD AVX2 работает ещё хуже. Если эта тема интересна могу сделать простой тест для сравнения выборки через vgather и через обычный mov. Добавлено через 5 минут Да я назвал функции Naive SSE2 и Naive AVX512 от слова наивный, т.к. там нет никаких хитрых алгоритмических оптимизаций - просто тупое сравнение по маске.
0
|
|
|
68 / 33 / 11
Регистрация: 18.07.2014
Сообщений: 263
|
|
| 01.04.2020, 20:37 [ТС] | |
|
Тесты с прозрачным семплом.
Native SSE2 57,48 x128 Orig 5,92 x128 mod 1,91 x128 asm 0,73 Процессор i5 3570k
0
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 07.04.2020, 14:09 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
У меня относительно мощный ноут, но:
Добавлено через 48 минут Результаты после нормальной перезагрузки:
Добавлено через 11 минут Дополнительный тест:
Добавлено через 16 минут хммм.....
0
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 07.04.2020, 21:04 | |
|
Не по теме: ого...
0
|
|
|
68 / 33 / 11
Регистрация: 18.07.2014
Сообщений: 263
|
|
| 10.04.2020, 22:49 [ТС] | |
|
Сейчас протестировал, x128 orig даёт ложное срабатывание. Семплы прилагаю.
0
|
|
|
68 / 33 / 11
Регистрация: 18.07.2014
Сообщений: 263
|
|
| 10.04.2020, 23:29 [ТС] | |
|
А, хотя это оно типа в углу находит если не находит. Легко исправить.
Добавлено через 3 минуты В начале дописать Result:=Point(-1,-1); Добавлено через 28 минут В FindInRegionSSE2Naive никак не могу поправить баг, почему не находит в 0,0. Типа чтобы в ласт столбце находил надо jne @row заменить на jge @row. А вот если jne @col заменить на jge @col, то оно не вылетает но начинает находить вообще не там где надо, ломается выравнивание.
0
|
|
|
68 / 33 / 11
Регистрация: 18.07.2014
Сообщений: 263
|
|
| 11.04.2020, 00:39 [ТС] | |
|
Вот, поправил баги с божьей помощью. Теперь в углах находит. Осталось оформить всё по красоте.
0
|
|
|
68 / 33 / 11
Регистрация: 18.07.2014
Сообщений: 263
|
|||||||||||
| 02.09.2021, 20:03 [ТС] | |||||||||||
|
Немножко некропостинг, но так как тут мне реально очень помогли ощущаю за собой ответственность то просто оставлю это здесь. Только недавно руки дошли применить код в основном проекте, и повыласили баги со смещениями. Посидев дня три-четыре я эти баги исправил.
Вот версия дельфийская, форматирование кода оставил по максимуму оригинальное:
0
|
|||||||||||
| 02.09.2021, 20:03 | |
|
Побитовые операции Побитовые операции Побитовые операции Побитовые операции
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|
|
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать
Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|