Archive for the ‘performance’ Category.

Про ресурсы

После сопливого поста про сейвгеймы в Program Files просто обязан сделать что-то полезное (тем более, что занял им козырный нумер “100″). Например, написать рассказ про то, что должен делать resource manager.

Я уже неоднократно высказывал мысль о том, что как только вы в ресурс-менеджере пишите что-то вида enum { eTexture, eMesh, eSprite, … }; то ваш идеальный ресурс-менеджер идет лесом. Потому что он превращается в ресурс менеджер, к которому (достаточно искуственно) притянуты за уши куски других подсистем. Например, если мы корректируем формат меша, нам придется редактировать и подсистему управления геометрией, и ресурс-менеджер, что недопустимо.

Если мы выбросим enum из ресурс менеджера, то что останется в нем? Если кто-то думает, что исключительно fopen()/fread(), то он глубоко заблуждается.
Continue reading ‘Про ресурсы’ »

GameObject и длииииииииинные асинхронные операции

Хорошо, когда игровой объект писать легко и приятно – простой линейный код радует глаз скриптера. Всё легко, красиво, понятно.

Continue reading ‘GameObject и длииииииииинные асинхронные операции’ »

Кровавое месиво в памяти (часть 2)

Монитор понемногу расширяется, хотя для мониторинга произвольных приложений надо решить еще несколько проблемных вопросов с перехватом вызовов в системные dll. Впрочем, при наличии перехваченных malloc/new создание файла монитора является простым, приятным и дает сильно больше информации, чем трассировка системных адресов.
Continue reading ‘Кровавое месиво в памяти (часть 2)’ »

Component-oriented design на консолях, лобзиком по шаблонам

Сегодня в нашей постоянной рубрике “классические отжыги на конале” будут Борины сказки про компонентные системы, console-style. Сказки долгие и хорошие, как раз на ночь.
Отжыг давний, еще с 2005-го года.

Continue reading ‘Component-oriented design на консолях, лобзиком по шаблонам’ »

Кровавое месиво в памяти (часть 1)

Несколько недель назад я уже писал про исследование оперативной памяти. На этих выходных набросал небольшое приложение для того, чтобы промониторить результаты более подробно. Результаты, в общем-то, ожидаемые, но все равно, картинка перемещения блоков завораживает точно также, как и в свое время магическая работа встроенного дефрагментатора жестких дисков под Windows 98 :)

Continue reading ‘Кровавое месиво в памяти (часть 1)’ »

Iterator через призму С

С точки зрения С итератор это такой плохой указатель с неочевидным оверхедом. Что удивительно, обратное тоже верно. С точки зрения С++ указатель, это такой unsafe итератор с очевидным отсутствием оверхеда.
Continue reading ‘Iterator через призму С’ »

RANDOM SSE2

Логическое завершение вот этого поста. Немножко про “неоптимальность” SSE2 кода.
Continue reading ‘RANDOM SSE2’ »

My own lighting shader with blackjack and hookers

crossposted from zeuxcg.blogspot.com.

Free Image Hosting at www.ImageShack.usSo, yesterday we were discussing various lighting approaches at local IRC chat, and someone said that it was impossible to make a ps.2.0 single-pass lighting shader for 8 lights with diffuse, specular and attenuation, of course with normal map. Well, I told him he was actually wrong, and that I can prove it. Proving it turned out to be a very fun and challenging task. I am going to share the resulting shader and the lessons learned with you.
Continue reading ‘My own lighting shader with blackjack and hookers’ »

RANDOM, SSE, SSE2

Всё чудесатее и чудесатее. Давеча профайлер показал на rand() в партиклах. В паритклах его много и он там большей частью float rand(), либо vec3 rand(), либо таки vec4 rand(). Дизассемблер немедленно сказал, что стандартный rand() не инлайнится.

Continue reading ‘RANDOM, SSE, SSE2’ »

Тяжела и неказиста жизнь лида

Буквально несколько дней назад Пушыстый писал про “Удаление многих элементов из массива”. Отличная задачка, хорошо разобранная, но, к сожалению, действительно часто реализуемая через задницу.

Но я сегодня хотел подняться чуть повыше. В конце-концов, подобных задач программистам приходится решать несколько десятков в день. И вот представьте себе – сидит лид программер, под ним работает 5 или даже большее количество людей, каждый из которых решает удаление из массива (вместо удаления из массива подставьте сюда что угодно другое) методами murkt или _winnie.

Continue reading ‘Тяжела и неказиста жизнь лида’ »