0

我有一个非常简单的可可应用程序(不是 iphone),它由一个覆盖整个应用程序窗口的 WebView 实例组成。我注意到在某些页面上,该应用程序将消耗 100% 的核心之一。使用 Instruments 我可以看到几乎所有的时间都花在了 [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 Inspector 显示绘制(应用使用 100% CPU 匹配实心紫色条): 显示 Paint 的 Web 检查器

4

0 回答 0