Оптимизация языка сборки мусора, есть идеи?

Я довольно большой новичок когда дело доходит до оптимизации. В текущей игре, над которой я работаю, мне удалось оптимизировать функцию и снизить нагрузку на процессор примерно на 0,5%, и это примерно так же «круто», как и я.

Моя ситуация выглядит следующим образом:Я разработал физически тяжелую игру в MonoTouch, используя библиотеку-оболочку XNA под названием ExEn, и, как я ни старался, мне было очень трудно заставить игру достичь приемлемой частоты кадров на iPhone4 (даже не хочу думать о iPhone3GS на данный момент).

Снижение производительности почти наверняка связано с расчетами физики: если я отключу физику, частота кадров резко возрастет, если я отключу все, рендеринг, ввод, звук и просто оставлю физику на производительности, колеблется около 15 кадров в секунду во время интенсивных ситуаций с физикой.

Я использовал инструменты для профилирования производительности, и вот что я получил: http://i.imgur.com/FX25h.png Функции, которые снижают производительность, являются либо из физического движка (Farseer) или вызываемых ими функций оболочки ExEn XNA (в частности, Vector2.Max, Vector2.Min).

Я изучил эти функции и знаю, что везде, где это возможно, Farseer передает значения по ссылке в эти функции, а чем по стоимости, так что это покрыто (и это это буквально единственный способ, который я могу придумать. Сами по себе функции очень просты и сводятся к таким операциям, как

return new Vector2(Max(v1.x, v2.x), Max(v1.y, v2.y)) 

В основном я чувствую, что застрял, и в моих ограниченных возможностях и понимании оптимизации кода я не уверен, какие у меня есть варианты, и есть ли у меня вообще какие-то варианты ( может мне стоит просто свернуться калачиком и заплакать?). Когда LLVM включен и встроен в релиз, я получаю в лучшем случае 15 кадров в секунду. Мне удалось довести игру до 30 кадров в секунду, снизив точность физики, но это делает многие уровни просто неиграбельными, поскольку тела пересекаются друг с другом и схлопываются сами по себе.

Так что мой вопрос, это безнадежное дело или есть что-то Я могу повысить производительность?

7
задан tweetypi 6 July 2011 в 14:13
поделиться