Флейм
GameDev.ru / Флейм / Форум / Contra Force Advance (12 стр)

Contra Force Advance (12 стр)

Страницы: 19 10 11 12 13 14 Следующая »
=A=L=X=Постоялецwww8 июля 201811:46#165
Ага...
У меня вот такие результаты на 16 Кб:
+ Показать

и вот такие на 2Мб:
+ Показать

То есть кеш-нефрендли резко возвращает SSE к уровню "на порядок лучше худшего", а AVX на Phenom II вообще отсутствует и компилятор походу втыкает какую то эмуляцию и на эту колонку у меня смотреть не надо.

Правка: 8 июля 2018 11:52

=A=L=X=Постоялецwww8 июля 201812:10#166
А вообще забавно еще то, что у неких интелей видимо табличный метод так же быстро работает как cmov, а bitw работает еще заметно быстрее.
У Phenom II же табличный заметно медленнее cmov как и bitw. Хм, мда уж.
FordPerfectПостоялецwww8 июля 201812:31#167
> а как ты ссе авх делаешь? просто memcpy в ссе\авх тип данных, а дальше над ним проводишь обычные или интерсик операции и компилятор понимает, что ему нужно векторные операции юзать?
Код =A=L=X= изначально GCC-specific (ну или точнее совместимый: на icc и clang тоже может работать), поэтому я не испытывал угрызений, используя https://gcc.gnu.org/onlinedocs/gcc/Vector-Extensions.html . Для загрузки memcpy, да.

> А в мсвц также?
Нет.
Конкретно memcpy в SIMD-типы (и из них) в MSVC как-то работает, но возможно неоптимально. Арифметика - фиг там.

https://godbolt.org/g/cK9uMT

FordPerfectПостоялецwww8 июля 201813:24#168
=A=L=X=
Скорость bitw странная. Если -m32 тогда ок, но в -m64 я бы ожидал шустрее.
=A=L=X=Постоялецwww8 июля 201813:29#169
FordPerfect
> Если -m32 тогда ок

Да, так и есть.

beejahПостоялецwww8 июля 201818:09#170
=A=L=X=
> Табличный метод не зависит от данных/предсказаний, но в среднем всё равно
> тормоз и нередко уступает бранчу. В лучшем случае он быстрее бранча в 1,36 раз.
Ого. Не видел такого. Раза в три он при любом раскладе быстрей.
=A=L=X=Постоялецwww8 июля 201818:30#171
beejah
Это platform-specific, как выяснилось. А вот sse везде пока рулит и бруталит.
FordPerfectПостоялецwww8 июля 201822:37#172
bitw можно оптимизировать.
См. bit2 (для 64-битных систем) и bit4 (по задумке лучше для 32-битных).

http://rextester.com/DLHY92641

=A=L=X=
beejah
Просьба потестить.

=A=L=X=Постоялецwww9 июля 20187:37#173
%probab. | blt_if   | blt_tern | blt_tbl  | blt_cmov | blt_bitw | blt_bit2 | blt_bit4 | blt_sse2 | blt_avx2
0.000000 |    1.144 |    0.153 |    2.518 |    1.221 |    2.289 |    1.297 |    0.687 |    0.153 |    1.297
0.050000 |    1.450 |    0.153 |    2.518 |    1.221 |    2.289 |    1.297 |    0.763 |    0.153 |    1.297
0.100000 |    1.678 |    0.153 |    2.594 |    1.221 |    2.289 |    1.373 |    0.763 |    0.229 |    1.221
0.150000 |    1.984 |    0.153 |    2.518 |    1.221 |    2.289 |    1.297 |    0.687 |    0.153 |    1.221
0.200000 |    2.213 |    0.153 |    2.518 |    1.144 |    2.289 |    1.297 |    0.687 |    0.153 |    1.297
0.250000 |    2.594 |    0.229 |    2.518 |    1.221 |    2.213 |    1.297 |    0.763 |    0.153 |    1.221
0.300000 |    2.899 |    0.153 |    2.518 |    1.144 |    2.213 |    1.373 |    0.763 |    0.153 |    1.373
0.350000 |    3.128 |    0.153 |    2.518 |    1.221 |    2.289 |    1.297 |    0.687 |    0.229 |    1.297
0.400000 |    3.281 |    0.153 |    2.518 |    1.144 |    2.213 |    1.297 |    0.687 |    0.153 |    1.297
0.450000 |    3.510 |    0.153 |    2.518 |    1.221 |    2.289 |    1.297 |    0.687 |    0.153 |    1.297
0.500000 |    3.586 |    0.153 |    2.518 |    1.221 |    2.289 |    1.297 |    0.763 |    0.229 |    1.297
0.550000 |    3.510 |    0.153 |    2.518 |    1.144 |    2.289 |    1.297 |    0.687 |    0.153 |    1.221
0.600000 |    3.433 |    0.153 |    2.518 |    1.221 |    2.289 |    1.297 |    0.687 |    0.229 |    1.221
0.650000 |    3.281 |    0.229 |    2.518 |    1.221 |    2.289 |    1.297 |    0.763 |    0.153 |    1.221
0.700000 |    2.975 |    0.229 |    2.594 |    1.221 |    2.213 |    1.297 |    0.763 |    0.229 |    1.297
0.750000 |    2.747 |    0.153 |    2.518 |    1.144 |    2.289 |    1.297 |    0.687 |    0.229 |    1.221
0.800000 |    2.365 |    0.153 |    2.518 |    1.221 |    2.213 |    1.297 |    0.687 |    0.229 |    1.221
0.850000 |    2.060 |    0.153 |    2.594 |    1.221 |    2.289 |    1.297 |    0.687 |    0.153 |    1.297
0.900000 |    1.755 |    0.153 |    2.518 |    1.144 |    2.289 |    1.297 |    0.687 |    0.229 |    1.297
0.950000 |    1.602 |    0.153 |    2.518 |    1.221 |    2.289 |    1.373 |    0.687 |    0.229 |    1.297
1.000000 |    1.221 |    0.153 |    2.518 |    1.221 |    2.289 |    1.297 |    0.763 |    0.229 |    1.297

FordPerfectПостоялецwww9 июля 201812:45#174
=A=L=X=
Вот, а то было странно, что четырёхстволом (32bit) не удаётся обогнать побайтовую обработку.

И без всяких компиляторо-специфичных вещей. Да и от платформы особо не зависит (желательно не меньше 32 бит). На LE/BE вроде тоже пофиг.

beejahПостоялецwww9 июля 201813:52#175
FordPerfect
> Просьба потестить.
Как только домой попаду, сделаю.
FordPerfectПостоялецwww11 июля 201818:32#176
От SSE4.1 ему лучше не стало:
http://rextester.com/HUZL76472

Кстати, можно бы себе бэкпортить. А то у меня тоже побайтовая обработка.

Кстати, =A=L=X=, можешь завести её на GBA (физическом/эмуляторе); и здешние версии? Интересно:
1. Насколько малой кровью оно там заведётся.
2. Насколько будет тормозить.
=A=L=X=Постоялецwww11 июля 201819:38#177
FordPerfect
Ой, там возни много будет. К тому же GBA еще и сложен по опциям. У проца нет кеша, но уже есть трехстадийный конвеер. А так же первое поколение thumb, 16 битную шину к пзу и 256 кб озу и 32кб озу с 32-битной шиной. Нативные инструкции ARM все имеют способность условного выполнения, т.е. Не только cmov есть, но вообще любая инструкция может быть безбранчево откинута. Но когда код расположен в пзу картриджа, то рациональнее юзать режим 16-битных инструкций thumb где условны только бранчи. Но можно закинуть код и/или данные в быстрыеи32кб озу. Короче там этих тестов и без sse по хорошему тоже надо наворачивать сложно, ей богу лень.
=A=L=X=Постоялецwww11 июля 201819:40#178
Ну и, кстати, заливка экрана пиксельно на гба тормозит и там нет смысла в этих алгоритмах, там спрайтовый аппаратный видеочип и тем он и прекрасен.
FordPerfectПостоялецwww12 июля 201815:01#179
Код блиттинга с произвольным ключом:
http://rextester.com/ZRISQ82196
Страницы: 19 10 11 12 13 14 Следующая »

/ Форум / Флейм / ПроЭкты

2001—2018 © GameDev.ru — Разработка игр