Определение процессора / производительности iPad - PullRequest
2 голосов
/ 14 сентября 2011

У меня есть приложение на базе OpenGL ES2, которое плавно работает на скорости 30 кадров в секунду на iPad 2, но на iPad 1 это немного отрывисто.Я хочу изменить свое приложение, чтобы оно использовало для iPad 1 частоту кадров по умолчанию, равную 20 кадр / с, что, как я уже проверял, позволяет работать с этой моделью намного плавнее.спектакль?Должен ли я просто искать более одного ядра процессора (и как я могу это определить) или, возможно, скорость процессора или общую системную память?Я знаю, что смотреть на строки устройства плохо, поэтому я избегаю этого.Я подумал, чтобы мой код рисования просто обнаружил, что он не соответствует частоте кадров и задушил его, но у него есть сложности, которых я бы предпочел избежать (то есть откат на iPad 2 только из-за временной нагрузкиspike, а затем придется добавить еще больше кода, чтобы повторить попытку с более высокой частотой кадров на случай, если это произойдет).

Ответы [ 2 ]

1 голос
/ 15 сентября 2011

Возможно, вам стоит попробовать sysctl для этого.

- (NSUInteger) getSysInfo: (uint) typeSpecifier
{
    size_t size = sizeof(int);
    int results;
    int mib[2] = {CTL_HW, typeSpecifier};
    sysctl(mib, 2, &results, &size, NULL, 0);
    return (NSUInteger) results;
}

- (NSUInteger) cpuFrequency
{
    return [self getSysInfo:HW_CPU_FREQ];
}

- (NSUInteger) busFrequency
{
    return [self getSysInfo:HW_BUS_FREQ];
}

См. UIDevice + Расширение категории Эрики Садун * (из которого извлечен этот код).

0 голосов
/ 14 сентября 2011

Вы смотрели на displayLinkWithTarget:selector: метод UIScreen и связанный с ним CADisplayLink класс?

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

...