Я собираю два (статических) изображения, несколько раз в секунду. Этот код довольно хорошо работает на 3G, и очень медленно на iPhone4. TimeProfiler показывает, что вызов UIImage drawAtPoint: заканчивается вызовом чего-то очень дорогого, называемого «argb_sample_RGBA21». Эта процедура никогда не вызывается в 3G. Есть ли какое-то преобразование байтового порядка, которое я мог бы выполнять на статических изображениях один раз, тем самым сохраняя это преобразование байтового порядка?Улучшение производительности CoreGraphics на iPhone4
+ (UIImage *) createInterpolatedImageBetween: (UIImage *) imageA
andImage: (UIImage *) imageB
forValue: (float) fractionalValue {
UIGraphicsBeginImageContextWithOptions(CGSizeMake(imageA.size.width, imageA.size.height), YES, 0.0);
[imageA drawAtPoint: CGPointMake(0,0)];
[imageB drawAtPoint: CGPointMake(0,0)
blendMode: kCGBlendModeNormal
alpha: fractionalValue];
UIImage *answer = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return answer;
}
в iPhone4 изображений может быть гораздо больше больше, чем 3GS, я думаю, что это причина. Убедитесь, что вы обрабатываете изображение нужного размера;) – nacho4d