高效的NSArray和float *转换

时间:2014-07-01 14:12:34

标签: objective-c floating-point nsarray

我知道可以使用

float *和NSArray(或NSMutableArray)之间进行转换
for (int i=0; i<[array count]; i++) x[i] = [[array objectAtIndex:i] floatValue];

for (int i=0; i<N; i++) [array addObject:[NSNumber numberWithFloat:x[i]]];

但是那些都使用缓慢而低效的for循环。我想看x = [array toFloatArray]。几乎所有使用图像/任何iOS相关并需要较低级别库(BLAS,LAPACK等)的东西都需要这种转换,并且加速它会很不错。

1 个答案:

答案 0 :(得分:0)

无论你做什么,或者涉及哪个库,要从NSArray中的NSNumbers获取浮点数,都无法绕过与你已经显示的或多或少相似的代码。

如果您想要速度,请使用原始C阵列并自行管理。

如果您使用的代码提供或要求NSArrays包含带有浮点数的NSNumber,而不是原始C数组,那么您无能为力。