我有一段代码基本上是:
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风格的数组,这大大加快了速度。是否有类似的低级方式来做上述事情?
谢谢!
答案 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)
是的,创建单个大型数组肯定比抚摸每个单独的线段更快。