WinJS web worker调用vs调用WinRT C#组件返回承诺

WinJS web worker调用vs调用WinRT C#组件返回承诺,c#,multithreading,windows-runtime,winjs,web-worker,C#,Multithreading,Windows Runtime,Winjs,Web Worker,我正在开发一个WinJS游戏,其中部分逻辑是在C#WinRT组件中实现的,因为它被证明更高效,更容易概念化和调试。该组件被调用的频率相对较低,并返回一个promise,其返回值被插入WinJS游戏对象 现在我有了第二个场景,我想通过将动画阶段发生的必要数学工作委托给一个单独的线程来加速SVG动画,并返回一个表示要执行的纯UI操作的对象,例如,应该移动/增长的游戏对象列表等,并且主线程可以快速地对DOM执行操作(我使用的是Knockout)。与第一个场景不同,每个动画增量都会发生此背景线程交互,因

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

现在我有了第二个场景,我想通过将动画阶段发生的必要数学工作委托给一个单独的线程来加速SVG动画,并返回一个表示要执行的纯UI操作的对象,例如,应该移动/增长的游戏对象列表等,并且主线程可以快速地对DOM执行操作(我使用的是Knockout)。与第一个场景不同,每个动画增量都会发生此背景线程交互,因此,非常多


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

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

调用WinRT对象的代价很高(也就是说,速度很慢)。一定要测量那个开销。我怀疑每一个动画帧都会太快而跟不上。但是测量,不要猜测。