![]() |
|
|
![]()
|
|
| AlexanderV |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 31.8.2005 Где: Украина, Киев Репутация: нет Всего: нет |
Мне надо оптимизировать с помощью встроенного в c++ ассемблера следующюю функцию:
В таком варианте она выполняется слишком медленно. К сожалению, asm я пока вообще не знаю |
|||
|
||||
| Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: нет Всего: 93 |
Ну, знаешь ли, она на асме намного быстрее не станет.
Тут же просто копирование памяти идёт, а компилятор С++ и так всё оптимизирует по-максимуму. Кстати, я бы попробовал убрать слово register, т.к. опять же ИМХО компилятору лучше знать, что пихать в регистры. Это сообщение отредактировал(а) Дрон - 31.8.2005, 15:54 -------------------- Да. Именно так. |
|||
|
||||
| AlexanderV |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 31.8.2005 Где: Украина, Киев Репутация: нет Всего: нет |
Просто она как-то все равно слишком медленно выполняется...
Подобные действия с помощью memcpy() выполняються раз в 5 быстрее. Может, дело в том, что pBuffer указывает не на системную, а на видеопамять? |
|||
|
||||
| Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: нет Всего: 134 |
Разверни цикл, попробуй использовать 64 битные регистры.
-------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
А как его развернуть? Мне же заранее не известно количество итераций. |
|||
|
||||
| Mayk |
|
||||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: нет Всего: 134 |
Примерно так:
ps. memcpy кстати подобное делает. Только на асме. Это сообщение отредактировал(а) Mayk - 31.8.2005, 22:02 -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
||||
|
|||||
| oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: нет Всего: 34 |
AlexanderV
а как ты видео память копируеш чет я не понял? тоесть прям в примари сурфейсе? если так то тормоза обеспечены на 100 процентов -------------------- SST 465555 icq 200-512-712 |
|||
|
||||
| AlexanderV |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 31.8.2005 Где: Украина, Киев Репутация: нет Всего: нет |
Не, я копирую в другую поверхность, которая потом блиттается с отсечением в первичный буфер. А вообще, а поменял один флажок, и теперь поверхность создается не в видео, а в системной памяти, скорость при этом в 2 раза больше. Кстати, развертка цикла практически никак не ускорила копирование
|
|||
|
||||
| oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: нет Всего: 34 |
ну суть такова
1) рисуй в бэкбуфере 2) НЕ нада ждать эвентов для отрисовки - будет туфта 3) как нарисовал все что надо в бэкбуффере. делаеш лок сурфейса и флип -------------------- SST 465555 icq 200-512-712 |
|||
|
||||
![]()
|
| Правила форума "Asm для начинающих" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Asm для начинающих | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |