2013-11-23 4 views
1

Я хотел бы иметь функцию, которая возвращает скорость процессора устройства iOS.Найти скорость процессора устройства iOS

Я нашел то, что я думал, что может быть решением с этим:

#include <CoreService/CoreService.h> 

long getProcessorClockSpeed() 
{ 
    OSErr err; 
    long result; 
    err=Gestalt(gestaltProcClkSpeed,&result); 
    if (err!=nil) 
     return 0; 
    else 
     return result; 
} 

, но это не компилируется. (Файл CoreService.h не найден). Видимо, это для Mac OS, а не для iOS?

Я написал и оптимизировал алгоритм обработки сигналов, который теперь можно просто запустить в реальном времени на iPhone 4S. Я хотел бы позволить алгоритму работать на двухъядерных устройствах с тактовой частотой 800 МГц или более и запрещать его на других устройствах. Я уже могу получить количество ядер, но мне не удалось получить тактовую частоту процессора.

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

Есть ли идиоматический способ получения тактовой частоты процессора?

Kudos присуждается за: 1) подход, который не будет отклонен моим приложением 2) подход, который имеет меньшую головную боль, чем подход, основанный на модели с именем-таблицей?

+1

Это действительно обман http://stackoverflow.com/questions/11336896/how-to-limit-ios-app-in-store-to-4s-and-ipad-3-only и много другие вопросы, по которым люди хотят ограничить оборудование, на котором может работать приложение. BTW представьте, что отзывы клиентов, если они загружают ваше приложение, и ** затем ** найти, что он не может работать. –

+0

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

ответ

4

Мне не известно о поддерживаемом способе получения тактовой частоты на устройстве iOS.

Вы можете получить идентификатор модели HW и испечь список слишком медленных моделей и, следовательно, отказаться от запуска на этих моделях.

Поэтому я предлагаю отрицательный список (модели вы не могу работать на), в отличие от положительного списка, чтобы убедиться, что ваше приложение будет работать на новой, еще неизданных модели - они, вероятно, будет достаточно быстро ,

код, чтобы получить струнная модель HW является

#include <sys/types.h> 
#include <sys/sysctl.h> 

- (NSString *) platform 
{ 
    size_t size; 
    sysctlbyname("hw.machine", NULL, &size, NULL, 0); 
    char *machine = malloc(size); 
    sysctlbyname("hw.machine", machine, &size, NULL, 0); 
    NSString *platform = [NSString stringWithCString:machine encoding:NSUTF8StringEncoding]; 
    free(machine); 
    return platform; 
} 

Вы можете найти полный список current and previous models at the iPhoneWiki, строка, которую вы должны будете соответствовать на это в Шифр ​​ колонке.

+0

Интересным моментом является то, что 'sysctlbyname (" hw.cpufrequency ", ...)' * должен * возвращать частоту процессора. Кажется, что это работает на iOS Simulator, но * не * на устройстве iPhone, где системный вызов возвращает (-1). –

+0

Потому что sysctl называет симулятор фактически ** переадресовывает вызов в sysctl ** OS X **. «hw.cpufrequency» существует во всех версиях OS X, AFAIK, но не в iOS. – Perceval

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