2010-01-03 67 views
2

我有一個代碼塊,這是本質:如何優化石英2d?

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

這是造成一個有點瓶頸的時候是不是變大,因爲它可能會在我的情況下做的。我不太瞭解石英2d知道如何最佳地優化這個。在循環中創建一個巨大的點數組然後再增加整個數組是否更好?

或者更理想的是,我剛剛優化了處理數組的代碼的不同部分。在這樣做的時候,我轉換爲使用C風格的數組,這使得事情變得非常迅速。有沒有類似的低層次的做上述的方式?

謝謝!

回答

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); 
+0

謝謝。使用類似於此代碼的東西將循環時間減少75%。我仍然喜歡它更快,但這是一個很大的改進,所以我現在就拿它。 – 2010-01-03 21:59:30

0

是的,創建單個大陣列肯定會比撫摸每個單獨的線段更快。