Похоже, все не так уж безнадежно. Возможно, можно дооптимизировать :D
Вид для печати
Похоже, все не так уж безнадежно. Возможно, можно дооптимизировать :D
после отключения оперы и выставления опции AY вместо zxm и отключения GS. на высоком приоритете латракс идет почти без запинок и за всю дему была пара щелчков.
---------- Post added at 12:23 ---------- Previous post was at 12:21 ----------
так что зря sinus сказал, что нужно 500.:) унреал щелкает ужасно, так что не сравнялся, а обогнал:)
---------- Post added at 12:23 ---------- Previous post was at 12:23 ----------
так что зря sinus сказал, что нужно 500.:) унреал щелкает ужасно, так что не сравнялся, а обогнал:)
Не знаю, дойдут ли у меня руки, буду сюда записывать идеи по оптимизации (вдруг кому пригодится):
1. Заюзать orc: http://code.entropywave.com/projects/orc/
а ты в unreal тоже GS отключи.Цитата:
osa, так что зря sinus сказал, что нужно 500. унреал щелкает ужасно, так что не сравнялся, а обогнал
я что-то так и не понял что это. понял только что это не очень портабельно.Цитата:
mastermind, Заюзать orc
Как раз таки портабельная штука (Current targets: SSE, MMX, ARM, Altivec, and NEON). Генерит из псевдокода машинный код в векторных инструкциях CPU (+возможна эмуляция при недоступности векторых инструкций). Применимо там же где и MMX, SSE и прочее (ну т.е. типа циклическая обработка массивов данных, которую можно распараллелить), но портабельно (см. выше). Ссылка на документацию: http://code.entropywave.com/documentation/orc/
В туториале там примеры работы со звуком и графикой: http://code.entropywave.com/document...-tutorial.html
Основной режим использования - генерация в рантайме (генерация в инструкциях CPU на котором программа запущена), но возможны варианты. Т.е., например, для x86 оно налету определяет что на данном CPU доступно (MMX, SSE и т.п.) и генерит соответствующий код (при первом вызове функции, насколько я понял при беглом просмотре кода).
Предшественник этой либы - liboil: http://liboil.freedesktop.org/wiki/
Используется как минимум в GStreamer довольно давно, так что в линуксовых дистрибутивах присутствует.
Иначе говоря, задача этой либы как раз состоит в решении проблемы непортабельности зоопарка MMX/SSE/и т.д.
Один хрен, не щелкает, а останавливается на треть секунды каждые 5 секунд на демарше.
---------- Post added at 14:00 ---------- Previous post was at 13:56 ----------
AY-emul пользоваться не возможно, грузит на 100, а тут, приятно удивило, что ничего не тормозит и музыка играет:)
Что кушает больше всего CPU на данный момент (внимание на вторую колонку):
http://img233.imageshack_.us/img233/...ucallgrind.png
Спасибо.
-march=i386 по дефолту. Буим компилить под i686 впредь, значит :D (на более медленных машинах все равно вряд ли будет работать). Пока же всем кто пользуется эмулятором под виндой есть смысл скачать экзешник из этого поста (тот который "pentium2" быстрее по идее).
Поделюсь своими опциями для mingw:
g++ -g3 -mthreads -march=native -mmmx -minline-all-stringops -O2 -DNDEBUG -fdata-sections -ffunction-sections -funroll-loops -funsigned-char -fno-strict-aliasing -W -Wall -Wextra -ansi -pipe
Насчет -march=native начинаю уже сомневаться, но пока никто не жаловался:)
Сборка MinGW с http://nuwen.net/mingw.html