2013-04-10 28 views
7

Я делаю Android-игру, и разница в производительности между одноядерными телефонами, такими как Galaxy S и двухъядерным Galaxy S2, сопоставима с ночной и дневной. Таким образом, вместо того, чтобы создавать разные версии для одиночных ядер и двух/четырехъядерных ядер, я думал об использовании количества процессоров устройства для отключения и некоторых графических функций.Достоверность количества процессоров

Но насколько надежным становится количество процессоров? У некоторых одноядерных телефонов есть потоки, такие как Intel Hyperthreading, которые показывают одно ядро ​​как два? Или несколько двухъядерных телефонов намного медленнее, чем Galaxy S2?

+3

Почему бы просто не дать пользователям возможность отключать причудливые эффекты, если они чувствуют, что игра работает слишком медленно? –

+1

1. Как я знаю, нет чипов с HT-подобной технологией Intel. 2. Да, некоторые даже двухъядерные чипы могут быть очень медленными. –

+0

Я думаю, что некоторые телефоны также используют основную парковку, в основном отключая один из ядер, когда батарея разряжена или когда выполняются некоторые другие критерии. Я столкнулся с аналогичной проблемой на ноутбуках, где основная парковка делает основные температурные утилиты неудобными из-за отсутствия ядра. –

ответ

0

Графические эффекты должны быть нарисованы графическим процессором, а не ЦП.

+0

. Вы вообще не можете делать все вычисления в графическом процессоре, но будет больше загрузки процессора, чем больше вы пытаетесь сделать. – Rup

+1

Некоторые эффекты усиливают нагрузку на процессор, а не на графический процессор. Например, создавая тени на мобильном устройстве, raycasts для определения места и размера тени дороже, чем рисование самого блоба. – Esa

1

Хотя я осознаю ваши благие намерения, связанные с идеей проверки сердечников и автоматической настройки параметров, поэтому пользователю не нужно самостоятельно настраивать настройки &, что не будет работать на практике.

Это потому, что слишком много устройств и угловых корпусов для покрытия. Например:

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

Я уверен, что существует множество других примеров. Дело в том, что для вас, вероятно, будет кошмар для большинства/всех этих случаев, чтобы автоматически настроить настройки вашего приложения, особенно учитывая относительно более простое решение: спросите пользователя, какие настройки они хотят при запуске приложения, и сделайте легко настроить эти настройки в любое время.

Иногда лучше просто возложить бремя на колени пользователя, особенно если для этого не требуется никаких усилий, и для этого разработчик порекомендует больше усилий для этого. Удачи!

Смежные вопросы