我正在尝试以编程方式获取iOS CPU时间。
我正在创建一个使用Swift 3在iOS上打印CPU时间的应用程序。我使用了两个不同的函数:
var usage = rusage()
getrusage(RUSAGE_SELF, &usage
print(usage.ru_stime) //print system time`
和
var info = mach_task_basic_info()
var count = mach_msg_type_number_t(MemoryLayout<mach_task_basic_info>.size)/4
let kerr: kern_return_t = withUnsafeMutablePointer(to: &info) {
$0.withMemoryRebound(to: integer_t.self, capacity: 1) {
task_info(mach_task_self_,
task_flavor_t(MACH_TASK_BASIC_INFO),
$0,
&count)
}
}
if kerr == KERN_SUCCESS {
print("System time: \(info.system_time)")
}
else {
print("Error with task_info(): " +
(String(cString: mach_error_string(kerr), encoding: String.Encoding.ascii) ?? "unknown error"))
}
在Xcode模拟器上进行测试时,两种方法都有效,给我CPU系统时间,但是当我在实际设备上测试时,返回的时间总是为零。使用这两个函数,我可以获得CPU用户时间,但返回的CPU系统时间始终为零。
我是否必须为我的申请启用?为什么这些功能在模拟器上运行而在真实设备上不起作用?
谢谢。