1

我正在开发一个 WinJS 游戏,其中部分逻辑在 C# WinRT 组件中实现,因为事实证明它更高效,更易于概念化和调试。该组件的调用频率相对较低,并返回一个 Promise,我将其返回值插入 WinJS 游戏对象。

现在我有第二种情况,我想通过将在动画阶段发生的必要数学工作委托给单独的线程来加速 SVG 动画,并返回一个表示要执行的纯 UI 操作的对象,例如游戏列表应该移动/增长等的对象,并且具有快速针对 DOM 的主线程操作(我正在使用 Knockout)。与第一种情况不同,这种后台线程交互会发生在每个动画增量中,所以,相当多。

我打算用一个网络工作者来实现这个,我已经部分开始工作了,但我想确保我了解这两种方法的优缺点以及推荐的用例。似乎调用 WinRT 组件和调用 Web Worker 都涉及对正在传递的对象进行某种序列化或翻译。对于我现有的 WinRT 调用,我有一个 WinRT 工厂类作为我的 js 对象的属性,我使用它来构建游戏的镜像简化 WinRT 表示以传递给 WinRT 组件。对于网络工作者,我必须传递游戏相关方面的 JSON 副本,然后再次将结果翻译回来。再次使用对 C# 的调用会更好,还是真的只推荐用于不经常调用的调用?每个的相对开销是多少?还有什么我想念的吗?

4

1 回答 1

0

除了 Tavares 提到的之外,没有真正的硬性规定。WebWorkers 之间的通信比调用 WinRT 更快,但 WebWorkers 不是您想要反复创建和销毁的东西。在这种情况下,我个人会使用我在启动期间创建一次的 Webworker,然后在每次需要计算时调用其中的方法。

于 2014-05-02T19:47:24.547 回答