我想要一个能够返回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)一种比基于模型名称表的方法更难以解决的方法吗?
答案 0 :(得分: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的完整列表,您需要匹配的字符串位于标识符列中。