0

アプリウィンドウ全体をカバーする単一の WebView インスタンスで構成される非常に単純なココアアプリ (iPhone ではない) があります。特定のページで、アプリがいずれかのコアを 100% 消費することに気付きました。インストルメントの使用 ほとんどすべての時間が [NSView displayIfNeeded] に費やされていることがわかります。コール ツリーをドリルダウンすると、[WebHTMLView drawSingleRect] が表示されます。Safari で実行されている同じページは、ほとんど CPU を使用せずに正常に動作します...

なぜこれができるのか誰にも考えがありますか?

追加情報:

  • アプリ ウィンドウのサイズを (ほんの少しでも) 変更すると、CPU 使用率が元に戻ります。
  • OS X 10.8.5 を実行中

編集:私が見つけた唯一の「修正」は、ウィンドウのサイズを変更する NSTimer を追加することです。問題を「修正」するサイズ変更中に何が起こるかを誰かが知っているなら、私はそれを聞きたいです.

[NSTimer scheduledTimerWithTimeInterval:10.0 target:self selector:@selector(resizeToFixCPUUsage) userInfo:nil repeats:YES];

- (void)resizeToFixCPUUsage {
    NSRect frame = [self.window frame];
    frame.size.height -= 1;
    [self.window setFrame:frame display:NO animate:NO];
    frame.size.height += 1;
    [self.window setFrame:frame display:NO animate:NO];
}

CPU 使用率を示すインストゥルメント: CPU 使用率を示すインストゥルメント

ペイントを表示する Web インスペクタ (アプリは 100% の CPU を使用し、実線の紫色のバーに一致します): ペイントを表示する Web インスペクタ

4

0 に答える 0