大佬教程收集整理的这篇文章主要介绍了swift – 为什么Apple Accelerate框架有时会很慢?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
并且在使用1或者< SIMD指令的框架调用Apple的包装器的情况下.当函数从接近1.000次的循环调用时,来自框架的vvcospif()的4个元素计算函数比简单的标准cos(x * PI)慢. 我知道vvcospif()和cos()之间的区别,@R_835_10675@用vvcospif()来表示x * PI. 在游乐场中的示例,您只需复制代码并运行它:
import Cocoa import Accelerate func cosine_interpolate(alpha: Float,a: Float,b: Float) -> Float { let ft: Float = alpha * 3.1415927; let f: Float = (1 - cos(ft)) * 0.5; return a + f*(b - a); } var start: Date = NSDate() as Date var interp: Float; for index in 0..<1000 { interp = cosine_interpolate(alpha: 0.25,a: 1.0,b: 0.75) } var end = NSDate(); var timeInterval: Double = end.timeIntervalSince(start); print("cosine_interpolate in \(timeInterval) seconds") func fast_cosine_interpolate(alpha: Float,b: Float) -> Float { var x: Float = alpha var count: Int32 = 1 var result: Float = 0 vvcospif(&result,&x,&count) let SINSIN_HALF_X: Float = (1 - result) * 0.5; return a + SINSIN_HALF_X * (b - a); } start = NSDate() as Date for index in 0..<1000 { interp = fast_cosine_interpolate(alpha: 0.25,b: 0.75) } end = NSDate(); timeInterval = end.timeIntervalSince(start); print("fast_cosine_interpolate in \(timeInterval) seconds")
我的问题是:
为什么vvcospif()在这个例子中很慢?
可能是因为vvcospif()它是Objective-C运行时下的包装器,并且转换数据结构/从Intel SIMD复制内存 – > Objective-C – > Swift运行时比Tiny cos()慢吗?
#include <Accelerate/Accelerate.h> vvcospif(resultVector,inputVector,&count);
当inputVector和resultVector是带有1或2个元素的小数组或者只是float变量时,并且循环调用~1.000.000次.
cos(x * PI)计算时间接近20 ms.
和
以上是大佬教程为你收集整理的swift – 为什么Apple Accelerate框架有时会很慢?全部内容,希望文章能够帮你解决swift – 为什么Apple Accelerate框架有时会很慢?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。