среда, июля 18, 2012

Евангелисты врут. FireMonkey - отстой.

Вы, наверное, в курсе, что Embarcadero активно продвигает свое новое видение создания кроссплатформенного гуя – FireMonkey (они это называют фреймвоком, но для её нынешнего состояния это слишком круто звучит). В рунете анонсируется один конкурс за другим, проводятся вебинары, и пусть качество последних оставляет желать лучшего, но активность радует.  Теперь, собственно, к теме. В рамках последнего конкурса было предложено разработать какое-нибудь приложение для обучения. И вот вчера появилась очередная работа за авторством Евгения Чмеля (не знаю, склоняется эта фамилия или нет). В отличии от виденных ранее, простеньких “одноформочек”, тут была сделана попытка подергать обезьяну за все конечности: стилизация, 3D, шейдерные эффекты (о GPU accelerated graphics очень любят говорить евангелисты Embarcadero :)) ). Давайте посмотрим, что из этого вышло. Для тех, кто не смотрел вебинары сделаю маленькое отступление. На одном из вебинаров, евангелист Embarcadero, Всеволод Леонов рассказал душещипательную историю о том, как ему пришлось “компьютер перегрузить, конкретно, жестко” (это цитата), из-за того, что Silverlight SDK и эмулятор Windows Phone 7 “не cработали” (это цитата) на его компьютере т.к. им не понравился видеоадаптер или настройки графического процессора. А вот приложения разработанные с использованием FireMokey, продолжает Всеволод, совершенно не требовательны к аппаратному обеспечению. Давайте посмотрим, как он нам врал. Беспристрастным свидетелем нам будет Process Explorer v15.05 от Марка Русиновича. Итак, качаем приложение Евгения и запускаем (скриншотов приложения Евгения не привожу, они есть по ссылке на его работу. Обратите внимание на размытость шрифтов).

Запустили приложение. Смотрим на потребление:

afterstart_memory 

Нескромно, но можно простить “передовой технологии”. Переходим к разделу “Уроки” и выбираем “Урок 5”. Начинается подготовка сцены. Процесс этот длительный (у меня заняло чуть больше минуты, на четырехядерном Phenom II с частотой 3.3GHz), запаситесь терпением. Сцена построена. Смотрим на потребление:

opened_lesson

Обезьяна хорошо подкрепилась. Даже очень хорошо. Теперь попробуйте подвигать мышку над кнопками вариантов ответов. Ощущение, что GUI реагирует ну о-о-очень вяло, не так-ли? Смотрите на график использования CPU (я имею ввиду, что вы должны сами это попробовать, на своем компьютере) – в эти моменты его загрузка приближается к 100% (у меня было ~21.5% для четырехядерного процессора, что эквивалетно 86% для одноядерного). А ведь нам кто-то рассказывал про GPU accelerated graphics. Ладно, идем дальше. Отвечаем на все вопросы урока. Смотрим потребление:

after_lesson

Глаза не округлились? Теперь посмотрите, для сравнения, сколько потребляет 3D-стрелялка FarCry с активным игровым процессом (уровень называется Фабрика, если кому, вдруг, интересно) запущенная в полноэкранном режиме 1440x900:

farcry 

Выводы делайте сами.

4 комментария:

Alex комментирует...

у меня пререндеринг урока 5 занял 3 сек. Ноут, AMD A10 APU.

Kazantsev Alexey комментирует...

Сейчас проверил, действительно, подготовка Flow заняла около трех секунд. У меня встроенная графика AMD Radeon HD 3300. Единственное, что как-то могло повлиять на первые замеры это большой аптайм системы. Но у меня и сейчас аптайм составляет 11 дней. Странно это.

Alex комментирует...

Может мем-менеджер кривой в FMX? И фрагментация памяти большая? хотя, он общий же для всего.

Kazantsev Alexey комментирует...

Это точно не менеджер памяти. Час назад перезагрузил систему и повторил тест. Результат - 20 секунд на построение Flow. Причем, на результат не влияет даже изменение профиля производительности на High Performance, при котором процессор всегда работает на максимальной частоте.

Еще и с анимациями прикол обнаружился. Я вчера баловался с тестом на плавность анимации. Исходные данные такие: значения от 0 до 600, продолжительность 0.5. До сегодняшней перезагрузки анимация в этом тесте выполнялась стабильно за 4 шага со значениями: 150, 300, 450, 600 (или что-то около того, но цифры всегда были одни и те же и всегда только четыре шага). Выглядела такая анимация ужасно - жуткие рывки. После перезагрузки эта же самая анимашка стала выполняться уже за большее количество шагов - от 10 до 21. Однако, такая нестабильность поведения удручает.