графоманские улучшения ФЛЕНОВ МИХАИЛ AKA HORRIFIC Спецвыпуск: Хакер, номер #064, стр. 064-024-2 Только не торопись. Одного времени выполнения мало. Дольше всех может выполняться функция инициализации игрового уровня, где происходит загрузка текстур и т.д., но ее оптимизацией заниматься необязательно. Необходимо учитывать прежде всего те функции, которые участвуют непосредственно в рендеринге. Кроме того, нужно учитывать количество вызовов. Например, одна функция может выполняться достаточно быстро, но вызываться очень часто. Проанализируй: если вызов происходит из одного или двух мест, то, может, лучше ты сделаешь ее inline, то есть избавишься от нее вовсе и сэкономишь лишний переход, возврат, передачу параметров и т.д. В целом экономия составит примерно три и более команд (в зависимости от количества параметров), но если умножить это значение на количество вызовов функции, то экономия становится существенной. Например, если за секунду произошло 1000 вызовов функции, то избавление от нее даст экономию в 3000 команд в секунду — не так плохо! Кстати, в играх вообще не должно быть маленьких функций, выполняющих от одного до трех простых действий. Именно они чаще всего вызываются по сотни раз и съедают драгоценные такты. секреты от Intel Корпорация Intel заботится о разработчиках, в том числе о разработчиках игр. На intel.com есть много полезной информации о различных методах оптимизации и эффективных способах по использованию возможностей современных процессоров. Сейчас можно найти множество документов по использованию Hyper-Threading в играх, а двухъядерные процессоры действительно могут повысить производительность на порядок. Если для игры два ядра являются минимумом, то почему не воспользоваться ими для своих нужд? На сайте есть информация и на русском языке. Да, ее намного меньше, чем на английском, но основные и последние документы переводятся. Советую заглянуть на следующую страничку: www.intel.com/cd/ids/developer/emea/rus/dc/games/index.htm. Запомнить этот адрес трудновато, поэтому выжги его в «Избранном». ati и nvidia Компании ATI и NVidia являются законодателями моды на рынке домашних видеоускорителей и так же, как Intel, заботятся о разработчиках. На их сайтах можно найти тонны информации о разработке графических эффектов, игр и использовании максимальных возможностей последних видеочипов. Чем сильнее ты нагрузишь видеочип, тем быстрее будет работать программа. Почему? Чаще всего видеоускорители выполняют задачи быстрее, чем центральный процессор, потому что они специально заточены для графических вычислений, матриц, векторов и т.д. Некоторые задачи могут выполняться параллельно с вычислениями центральным процессором, что также повысит производительность. Если ты решил использовать какую-то информацию с сайтов www.ati.com или www.nvidia.com, то проявляй осторожность. Некоторые функции могут работать на видеочипе одного производителя, но вызвать серьезные проблемы на чипе другого производителя. В этом случае можно потерять большую часть потенциальных пользователей, а если проект коммерческий, то и покупателей. Чтобы решить проблему, попробуй создать две сборки исполняемых файлов: одна для чипа ATI, вторая — для чипа NVidia. Осуществляется не так сложно. Создаешь две функции для разных SDK и подключаешь их в зависимости от сборки, выполняемой в данный момент. Да, усложняется отладка, но прямой вызов функций драйвера видеокарты лучше. |