«Не следует привлекать новые сущности без самой крайней на то необходимости»
В который раз убеждаюсь, что принцип Оккама годится только для воздушных замков. На практике он, похоже, не применим.
В общем делаю тест-приложение для фреймворка. Создал карту (платформер), на ней бегает человечек.
Ступени развития программы по убыванию и очевидности решения.
Шаг 1. Просто рисовал тайлы, состоящие из примитивов согласно карте.
Загрузка процессора - 99% даже в статик-варианте.
Шаг 2. Заранее сгенерировал тайлы и рисовал их копированием блоков памяти.
Загрузка процессора - 50% (все еще не приемлемо).
Шаг 3. Создал сложную систему хеширования неизмененных элементов карты через двойной буфер с учетом модифицируемости карты.
Загрузка процессора - 15% (пойдет).
Шаг 4. Добавил систему освещения. Все уровни рассчитываются реал-тайм (самый простой и очевидный вариант).
Загрузка процессора - 99%.
Шаг 5. Захешировал неизменные освещенные участки, просчитывая изменение уровня освещенности только при условии модификации блока и его окружения.
Загрузка процессора - 18%.
http://img683.imageshack.us/img683/756/58856691.png
__________________________________________
Вопрос - почему принцип Оккама не работает? Почему самым лучшим решением не является самое простое?