我想有一个返回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 MHz或更高的双核设备上运行,而不允许在其他设备上运行。我已经能够获得内核数量,但是却无法获得CPU时钟速度。
我可以做一些事情,例如获取设备的模型,然后基于该字符串在设备上允许或不允许使用该算法,但是随着新设备的出现,这种基于表的方法需要进行更新,或者对新设备进行假设设备。
有没有惯用的方法来获取CPU时钟速度?
荣誉:
1)一种不会让我的应用程序被拒绝的方法
2)与基于模型名称表的方法相比,没有那么令人头疼的方法?
最佳答案
我不知道在iOS设备上获得时钟速度的受支持方法。
您可以获取硬件模型标识符,并烘焙太慢的模型列表,因此拒绝在这些模型上运行。
我建议使用否定列表(无法运行的模型)而不是肯定列表的原因是,确保您的应用程序可以在新的但尚未发布的模型上运行-它们可能足够快。
获取硬件模型字符串的代码是
#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的完整列表,您需要匹配的字符串在标识符列中。