gpt4 book ai didi

macos - 与 Safari 6 相比,OS X WebView 中的 元素慢两倍

转载 作者:行者123 更新时间:2023-12-03 17:23:20 25 4
gpt4 key购买 nike

我有一个 WebView (OS X) 加载一个 html 文件,其中只有一个我想在其上进行绘图的 Canvas 元素。

出乎意料的是,与在 Safari 中打开文件相比,在 WebView 中的帧速率约为 50%。

为了进一步测试这一点,我运行了 this canvas benchmark具有相同的结果:

Safari基准分数:3652平均 FPS:77

网页 View 基准分数:1733平均 FPS:37

而且这似乎与 JavaScript 无关。运行 Octane JavaScript Benchmark我在 WebView 和 Safari 中获得几乎相同的分数。

Here's a demo project如果你想自己尝试一下。只需选择您想要在 AppDelegate.m 中运行的测试即可。

我的印象是 Safari 使用的 WebView 与我们开发人员使用的相同?有谁知道为什么在 WebView 中渲染 Canvas 如此慢以及我可以采取什么措施来修复它?

谢谢!

最佳答案

您可以通过设置使用 Web View 的应用程序的默认值来启用优化渲染。与启用 WebDeveloperExtras 类似,您可以使用 defaults write 来启用加速 Canvas 渲染。对我来说,以下标志提高了性能:

defaults write <bundle.id> WebKitAccelerated2dCanvasEnabled -bool true
defaults write <bundle.id> WebKitAcceleratedDrawingEnabled -bool true
defaults write <bundle.id> WebKitCanvasUsesAcceleratedDrawing -bool true

或者,您可以将私有(private)方法添加到 WebPreferences 接口(interface):

@interface WebPreferences (WebPrivate)
...
- (BOOL)accelerated2dCanvasEnabled;
- (void)setAccelerated2dCanvasEnabled:(BOOL)enabled;

- (BOOL)acceleratedDrawingEnabled;
- (void)setAcceleratedDrawingEnabled:(BOOL)enabled;

- (BOOL)canvasUsesAcceleratedDrawing;
- (void)setCanvasUsesAcceleratedDrawing:(BOOL)enabled;

- (BOOL)acceleratedCompositingEnabled;
- (void)setAcceleratedCompositingEnabled:(BOOL)enabled;
...
@end

然后以编程方式使用它:

WebPreferences* prefs = [webView preferences];
[prefs setAccelerated2dCanvasEnabled:YES];
[prefs setAcceleratedDrawingEnabled:YES];
[prefs setCanvasUsesAcceleratedDrawing:YES];
[prefs setAcceleratedCompositingEnabled:YES];
[webView setPreferences:prefs];

关于macos - 与 Safari 6 相比,OS X WebView 中的 <canvas> 元素慢两倍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14501491/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com