我正在开发一个项目,该项目将通过JavaScript在网络浏览器上进行一些密集型计算(需要在客户端进行实时图像处理的社交游戏)。
一开始一切运作良好,但是当我尝试在iOS UIWebView中运行它时,性能很糟糕(WebView for Android和Mobile safari工作正常)。这是我的项目所必需的,因为网页需要显示在某个第三方社交分享APP上,该APP将在UIWebView中显示我的内容。
后来我发现Apple出于安全原因在iOS UIWebView中实际上禁用了JIT(但我认为这是针对政治的),这使得JavaScript执行性能比移动Safari更糟糕。
目前我的项目即将结束,iOS UIWebView中的用户体验几乎无法接受。 所以我认为不考虑JIT的帮助,是否有任何工具可以优化我的脚本以提高性能而不仅仅是文件大小? 就像做内联函数之类的东西一样用文字等预先计算和替换变量
答案 0 :(得分:0)
您可以使用WebWorker API:
Web Workers为Web内容提供了一种在后台线程中运行脚本的简单方法。工作线程可以在不干扰用户界面的情况下执行任务。此外,他们可以使用XMLHttpRequest执行I / O(尽管responseXML和channel属性始终为null)。一旦创建,工作人员就可以通过将消息发布到该代码指定的事件处理程序来向创建它的JavaScript代码发送消息(反之亦然。)本文提供了使用Web worker的详细介绍。
代码来自:http://www.html5rocks.com/en/tutorials/workers/basics/
var worker = new Worker('task.js');
worker.addEventListener('message', function(e) {
console.log(e.data);
}, false);
worker.postMessage();
task.js
self.addEventListener('message', function(e) {
self.postMessage(e.data);
}, false);