5

アプリを計測しているときに、出力ストリームにデータを書き込むときに CPU 使用率が 90% に跳ね上がることがわかりました。具体的には、ネットワーク速度が非常に高い場合です。タイマー インストルメントを使用してプロファイリングすると、ほとんどの CPU が NSStream デリゲート呼び出しに使用されていることがわかりました。CPU使用率を下げるために、書き込み技術を最適化するのを手伝ってください。

- (void)stream:(NSStream *)aStream handleEvent:(NSStreamEvent)eventCode
{
switch (eventCode) {

    case NSStreamEventOpenCompleted: {
        _isConnected = YES;
        if([self.delegate respondsToSelector:@selector(isFTPConnectionFoundForUpload:)])
            [self.delegate performSelector:@selector(isFTPConnectionFoundForUpload:) withObject:_isConnected?@"YES":@"NO"];
    } break;

    case NSStreamEventHasSpaceAvailable: {

            bytesWritten = [self.producerStream write:&self.buffer[0] maxLength:512];
            if (bytesWritten == -1) {
                [self stopSendWithStatus:@"Network write error"];
            }

    } break;

    case NSStreamEventErrorOccurred: {
        NSLog(@"producer stream error %@", [aStream streamError]);
        [self stopSendWithStatus:@"Stream open error"];
    } break;
    case NSStreamEventEndEncountered: {

    } break;
    default: {

    } break;
}

}

4

0 に答える 0