আমি অঙ্কনের পথগুলি নিয়ে ঘুরে বেড়াচ্ছিলাম এবং আমি লক্ষ্য করেছি যে কমপক্ষে কিছু ক্ষেত্রে ইউআইবিজেয়ারপথটি আমি যা কোর গ্রাফিক্সের সমতুল্য বলে বিবেচনা করেছিলাম তা ছাড়িয়ে যায়। -drawRect:
এক UIBezierPath, এবং CGPath: নীচের পদ্ধতি দু পাথ তৈরি করে। পাথগুলি তাদের অবস্থানগুলি ব্যতীত অভিন্ন, তবে সিজিপিথকে স্ট্রোক করতে ইউআইবেজারপথ স্ট্রোক করতে প্রায় দ্বিগুণ সময় লাগে।
- (void)drawRect:(CGRect)rect
{
CGContextRef ctx = UIGraphicsGetCurrentContext();
// Create the two paths, cgpath and uipath.
CGMutablePathRef cgpath = CGPathCreateMutable();
CGPathMoveToPoint(cgpath, NULL, 0, 100);
UIBezierPath *uipath = [[UIBezierPath alloc] init];
[uipath moveToPoint:CGPointMake(0, 200)];
// Add 200 curve segments to each path.
int iterations = 200;
CGFloat cgBaseline = 100;
CGFloat uiBaseline = 200;
CGFloat xincrement = self.bounds.size.width / iterations;
for (CGFloat x1 = 0, x2 = xincrement;
x2 < self.bounds.size.width;
x1 = x2, x2 += xincrement)
{
CGPathAddCurveToPoint(cgpath, NULL, x1, cgBaseline-50, x2, cgBaseline+50, x2, cgBaseline);
[uipath addCurveToPoint:CGPointMake(x2, uiBaseline)
controlPoint1:CGPointMake(x1, uiBaseline-50)
controlPoint2:CGPointMake(x2, uiBaseline+50)];
}
[[UIColor blackColor] setStroke];
CGContextAddPath(ctx, cgpath);
// Stroke each path.
[self strokeContext:ctx];
[self strokeUIBezierPath:uipath];
[uipath release];
CGPathRelease(cgpath);
}
- (void)strokeContext:(CGContextRef)context
{
CGContextStrokePath(context);
}
- (void)strokeUIBezierPath:(UIBezierPath*)path
{
[path stroke];
}
উভয় পাথই সিজি কনটেক্সটস্ট্রোকপথ () ব্যবহার করে, তাই আমি প্রতিটি পাথ স্ট্রোক করার জন্য পৃথক পদ্ধতি তৈরি করেছি যাতে আমি ইনস্ট্রুমেন্টগুলির প্রতিটি পাথের জন্য ব্যবহৃত সময়টি দেখতে পারি। নীচে সাধারণ ফলাফল রয়েছে (কল ট্রি ইনভার্টেড); আপনি দেখতে পাচ্ছেন যে -strokeContext:
9.5 সেকেন্ড সময় -strokeUIBezierPath:
লাগে , যখন লাগে মাত্র 5 সেকেন্ড .:
Running (Self) Symbol Name
14638.0ms 88.2% CGContextStrokePath
9587.0ms 57.8% -[QuartzTestView strokeContext:]
5051.0ms 30.4% -[UIBezierPath stroke]
5051.0ms 30.4% -[QuartzTestView strokeUIBezierPath:]
দেখে মনে হচ্ছে ইউআইবিজেয়ারপথটি যেভাবে এটি তৈরি করে তার পথটি অনুকূল করে তুলছে, বা আমি সিজিপিথকে নির্লজ্জভাবে তৈরি করছি। আমার সিজিপিথ অঙ্কনের গতি বাড়ানোর জন্য আমি কী করতে পারি?