如何优化石英2d?

时间:2010-01-03 16:02:01

标签: iphone objective-c optimization

我有一段代码基本上是:

    for(int i=0;i<aInt;i++){
        CGPoint points[2] = {CGPointMake(i,0),CGPointMake(i,bArray[i])};
        CGContextStrokeLineSegments(myContext, points, 2);
    }

当aInt变大时会造成一些瓶颈,因为在我的情况下可能会这样做。我不太了解quartz 2d知道如何最好地优化它。在循环中创建一个巨大的点数组然后将整个数组加入一次会更好吗?

或者更理想的是,我刚刚优化了处理数组的不同代码部分。在这样做的过程中,我转换为使用C风格的数组,这大大加快了速度。是否有类似的低级方式来做上述事情?

谢谢!

2 个答案:

答案 0 :(得分:3)

我还想象一个大型数组会让它更快。肯定会减少对CGContextStrokeLineSegments的调用。

CGPoint *points = (CGPoint*)malloc(sizeof(CGPoint)*aInt*2);

for(int i=0;i<aInt;i++){
    points[i*2] = CGPointMake(i,0);
    points[i*2+1] = CGPointMake(i,bArray[i]));
}

CGContextStrokeLineSegments(myContext, points, aInt*2);

free(points);

答案 1 :(得分:0)

是的,创建单个大型数组肯定比抚摸每个单独的线段更快。