Достоверность количества процессоров

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

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

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

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

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

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

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

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