Страница: 1 |
Страница: 1 |
Вопрос: Действия над массивами
Добавлено: 16.12.05 18:13
Автор вопроса: Dushes | ICQ: 249195431
У меня есть несколько байтовых массивов одинакового размера. Вопрос: как можно БЫСТРО производить побайтовые математические операции. Например - сложение всех элементов массивов или деление на какое то число...
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа:
Victor
ICQ: 345743490
Вопросов: 42
Ответов: 385
Web-сайт:
Профиль | | #1
Добавлено: 16.12.05 23:31
Ну, я думаю, что Basic'ом ничего быстрее чем просто циклом сделать не получится.
Вроде API таких нет.
А вот на ассемблере, думаю, сможешь. Я слышал, что там mmx есть.
Номер ответа: 2
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #2
Добавлено: 17.12.05 05:06
Да, mmx тут как раз в точку...
Чтобы ускорить работу с байтовым массивом, сделай его лонговым массивом. Потеряешь вчетверо больше памяти, но производительность увеличится. И поставь галку "Убрать проверку границы массива" в свойствах компиляции.
Номер ответа: 3
Автор ответа:
Dushes
ICQ: 249195431
Вопросов: 8
Ответов: 110
Профиль | | #3
Добавлено: 17.12.05 12:05
Ну я так сразу и подумал, что все равно на асме придется писать, ну да ладно, пойду TASM вспоминать...
Номер ответа: 4
Автор ответа:
Dushes
ICQ: 249195431
Вопросов: 8
Ответов: 110
Профиль | | #4
Добавлено: 17.12.05 12:06
То есть MASM...
Номер ответа: 5
Автор ответа:
Страшный Сон
Вопросов: 46
Ответов: 848
Профиль | | #5
Добавлено: 17.12.05 12:45
А VBшный компилятор mmx-оптимизаций не делает?
Номер ответа: 6
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #6
Добавлено: 17.12.05 13:10
При работе с байтовыми массивами?
Нет, а должен?
Номер ответа: 7
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #7
Добавлено: 18.12.05 01:01
Не, MMX не поможет, деления там нет. Умножение только, да и то для слов, а не для байт.
Сложение есть, можно складывать 8 байт или 4 слова или 2 двойных слова одновременно (потому что 64-битная мантиса регистров сопроцессора). Причём кроме циклического сложения ещё есть сложение со знаковым или беззнаковым насыщением. Правда не думаю что MMX предназначена для сложения... хотя кто знает, тестов я не проводил. Можно только посудить логически из этого порядка:
2. Складываем MM0 с памятью [m2]
3. Выгружаем из MM0 в [m1]
4. Следующие 8 байт
или же всё таки провести тесты.