Расчёт необходимой производительности компьютера для пользовательского 2D интерфейса

Как-то не попадались подобные расчёты нигде и никогда. Захотелось прикинуть, во что реально это выливается при разрешении экрана HD 1920×1080, трёхбайтовом цвете и 25 кадрах в секунду. Теперь об этом можно рассказать.

HD-Офис

Речь идёт о «статичных» интерфейсах в стиле кнопки Пуск. Тут всё просто, умножить разрешение на цвет, на количество кадров и на количество слоёв. Сколько у вас обычно открыто окон? У меня — штук 5. Значит по максимуму – 6 – 7 слоёв (5 окон + сама операционка и всплывающее меню). Ну, пусть 10 слоёв для многостаночников (а у них всегда открыты авторэффекты, разноцветные дрова и фотошоп). Итого:

1920*1080*3*25*10/1024 = 1518750 КБ = <память HD-офиса>,

Или около 1,5 ГБ. Таким образом, Windows XP (32-битная) даже для HD-офиса слабовата, а если ещё добавить гламурных эффектов в стиле Висты или Семёрки, и подавно.

HD-видео

При просмотре HD-видео программа считывает с «диска» сжатые куски, но распаковка требует как минимум троекратного запаса памяти (кадр = сжатый кадр  1 + сжатый кадр 2, и это всё в ОЗУ) при дельта-сжатии, всё это равнозначно добавлению 3-4 слоёв, добавьте ещё множитель 150% для ОЗУ.  Кстати, ещё ж 3D-видео забыл!

Согласен, это расчёт для ленивых программистов, по максимуму. Но сразу видно, что нетбуки и планшеты для  HD-Офиса слабоваты без дополнительных аппаратных костылей, а про аккумуляторы и говорить не приходится.

HD-всё

Что бы всё это обработать, при 64 разрядной шине (8 байт) и частоте ОЗУ 1300 Мгц и 4 тактах на чтение – запись, система максимально обработает за секунду:

8*1300*10000000/4/1024 = 2539062,5 КБ  = <объём шины ОЗУ>

Это где-то 2,5 ГБ. Ну, так процессор ещё и «думать» должен, а не просто писать распакованные кадры в видео-ОЗУ. Получается на  думанье в секунду остаётся

<объём шины ОЗУ> - <память HD-офиса>*150% =
2539062,5 – 1518750*1,5  = 260937,50 КБ

Маловато будет. Если ещё вспомнить про звук 7.1 с долби-обработкой, становиться печально. С HD-видео без аппаратных примочек уже не обойтись. Заметьте, что результат не зависит от количества голов в ЦПУ. Поэтому графическая система так и просится на один кристалл с головами, потому что шина память-процессор стала самым узким местом после жёсткого диска.

HD-игры

А если прикинуть, сколько нужно для типичных игр? Ну, допустим, футбол или путешествие гномика в девственном лесу с динозаврами?

Будем рассматривать 2D спрайт-технологию. Для 3D-игр результат будет отличаться только в худшую сторону, добавиться время расчёта каркаса, натягивания на него раскраски и трассировки освещения.

HD-спрайты

Каждый спрайт должен хранить свой оригинал в исходном размере, затем, нужен смаштабированный (уменьшенный, для простоты) вариант, может быть повёрнутый вариант, и, может быть ещё, прозрачный вариант спрайта. В худшем случае это выходит, как минимум, четырехкратное хранение. Для получения эффекта прозрачности надо вырезать из нарисованного по размеру повёрнутого спрайта и попиксельно сложить вырезанное с повёрнутым, с учётом прозрачности и записать результат обратно в сцену. В общем случае максимальный размер повёрнутого спрайта равен диагонали неповёрнутого, т.е. на корень из двух.

Итого, коэффициент на один спрайт:

Ksprite = 2 + 1,41*2  = 4,82

HD-футбол

Сколько же этих спрайтов надо для футбола и какого размера?

Обычно в процессе игры видна треть поля. При соблюдении масштаба получается пропорция для размера игрока и его «деталей». «Детали» допустим, метровые, а футбольное поле – 100 метров. Значит размер спрайтов при видимой трети поля (~30 метров)

Lsprite = 1920/30 = 64 пиксела в длину

Но каждый игрок состоит, скажем, из 14 спрайтов: голова, туловище, каждая рука и нога из 3-х частей. 22 игрока и 3 судьи. Зрители  возможно из 3х спрайтов, но их 300 человек Эта цифра  и последующие получена по методу профессора Стеля. Любители точности могут, в качестве упражнения, самостоятельно  в этом убедиться.

Теперь команда  и зрители, выходит, состоит из

Nsprite = (22 игрока + 3 судьи)* 14 + 3*300 зрителей = 1250 спрайтов,

Это занимает следующий объём в ОЗУ (для одного кадра):

Vram cadr barsa dynamo = Lsprite* Lsprite* Nsprite*3*Ksprite = 72300 КБ

Ворота с сеткой, мяч, трибуна, трава с разметкой и погодные эффекты дождя и снега можно сравнить по сложности рисования с рисованием команды. Если ограничится 25 кадрами:

Vram campnou = Vram barsa dynamo*2*25 = 3615000 КБ

Побольше, чем офис, около 3,6 ГБ. Что-то подсказывает, что гномик с динозавром выйдут покруче, там же три головы у дракона и на соснах немеряно иголок и шишек, и это всё должно полурандомно шевелиться из-за дуновения ветерка, а про крылья орла, на котором гномик летает, можно и не вспоминать.

HD-выводы

Выводы простые. Главное не операционка, хоть Windows, хоть Linux, хоть Леопард с Тигром, хоть Андроид с Хромиусом. Даже не важен производитель процессора и количество голов – это не главное. Главное – разрешение экрана, глубина цвета, частота кадров и узкое место при передаче информации. Кстати, ходят слухи про квадро-стерео HD ((1920х2)×(1080х2)х2). На чём это будет строиться?

Запись опубликована в рубрике ISI с метками , , , , , , . Добавьте в закладки постоянную ссылку.

3 комментария: Расчёт необходимой производительности компьютера для пользовательского 2D интерфейса

  1. кран балка говорит:

    не могу найти ваших контактов

  2. кран балка говорит:

    Даа… Достаточно спорно, поспорил бы с автором…

    • isi говорит:

      Ну так тут давайте и поспорим. Зачем вам мои контакты?

Комментарии запрещены.