首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >三位与ASMjs

三位与ASMjs
EN

Stack Overflow用户
提问于 2013-08-25 09:57:43
回答 2查看 2.8K关注 0票数 11

我最近开始对ASM做一些调查,我在网上玩了一些演示。我必须说,虚幻的演示令人印象深刻.我已经用了三个月的时间开发了一个应用程序。它在快速机器上工作得很漂亮,但在低端机器上却很难。当我在我的低端机器上运行不真实的演示时,演示就像一个梦一样工作。我的问题是,ASM有三个的位置-它能大大加速引擎吗?在研究或开发基于浏览器的同时使用两者并在两者之间切换的解决方案时,值得吗?另外,是否有计划让三人在未来利用这一机会?

我来自C++背景,对开发某种东西的前景非常感兴趣。但同时,这将意味着必须重新学习语言,更大的问题可能是需要花费大量的时间才能使其达到可用的程度。

你的想法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-26 08:28:07

这是我的观点:

首先也是最重要的是,asm.js并不是真正的手工编写的。尽管如此,我还是要说,编写它当然是可能的,因为它有一个验证器。这个不真实的演示已经被编译成带有asm.js的emscripten。它也不需要与被编译的代码之外的其他代码交互。因此,它生成高度优化的代码,因为在C++中,不真实的演示已经是高度优化的代码,它由编译器进行优化,然后通过asm.js获得另一次优化。

其次,火狐实际上只支持asm.js。尽管所有其他浏览器都可以执行它,但在大多数情况下,仍然会导致性能上的损失。如果您比较执行与普通javascript代码相同的asm.js代码,则会造成这种损失。只需搜索jsperf.com中的示例即可。

好的,这是一些关于asm.js的一般指南。现在让我们来谈谈Three.js。

首先,由于THREE.js必须与用户代码交互,因此编写asm.js库并不容易,因为它有许多限制(没有对象)。

其次,在Three.js强的情况下,asm.js在性能上不会获得很大的性能。但将从浏览器的未来更新中获得更多的好处。(例如,现在在THREE.js中的一个痛点-铬中的字体射线的创建即将开始。V8 issue)

第三,asm.js中的代码需要管理自己的内存。这意味着THREE.js必须想办法让大型应用程序在内存有限的情况下工作。或者让每个应用程序都非常需要内存。

第四,将不真实的演示与three.js进行比较有点不公平,因为three.js试图允许每个人编写3D应用程序,而不真实的引擎是3D游戏的高度优化引擎。

正如您注意到的,我主要反对asm.js in three.js。但这是因为现在说什么是最好的方法还为时过早。asm.js最终很有可能在three.js中占有一席之地,但作为渲染器的用途有限--例如。但就目前而言,围绕asm.js仍有太多未解决的问题。

但是,如果您想使用asm.js并使用C++,那么我推荐用于构建不真实演示的emscripten

这当然是我的观点。但我认为它在某种程度上代表了@Mr.doob和@WestLangley的想法。对长邮筒的事也很抱歉。

票数 14
EN

Stack Overflow用户

发布于 2017-04-06 18:01:47

最好的方法是用C(手工)编写一个小演示,然后编译到asm.js并运行它,然后用Three.js (手工)在JS中编写相同的小演示,然后运行它,并比较两种开发人员体验和性能方面的差异。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18427810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档