|
n****6 发帖数: 570 | 2 用clang 和emscripten
10000行c code。生成文件很大。几个函数就几百k
计算结果啥问题。不过文档少了点。指针数组javadcript 调用费劲。速度不错。不过
ie 8 9 不支持。微软太差,老要自己搞一套最后又不了了之。 |
|
h*******n 发帖数: 82 | 3 1.已经相当牛逼了,诸如Qt,Bullet Physics Engine之类大的C++ library都编译成了
asm.js了,你可以去网上搜搜,多线程应该差点,C++也是到了11才有多线程支持的再
加上javascript本身不支持shared memory state。但是确定的是多线程在emscripten
里用HTML5 webworker模拟了。
low level的pthread支持还在试验阶段:https://kripken.github.io/emscripten-
site/docs/porting/pthreads.html#running-code-and-tests
C++11的支持要等emscripten的衍生WebAssembly来实现了。几大家族都在work on it.
memory model要follow C++11,我感觉意味着可能multi core programming 在浏览器
端会成为可能, lock-free那一堆算法有可能在浏览器里跑。https://github.com/
WebAssembly/design/blob/maste... 阅读全帖 |
|
h*******n 发帖数: 82 | 4 你仔细看了么,这个不是像threejs那样的wrapper. 你先搜搜什么是asm.js,看看这个
比普通的JS快多少倍,然后再看看emscripten是什么,效率估计比native c++ opengl
慢2倍,但是已经很牛逼了。unity3d,unreal或者Cocos2D都支持emscripten。而且这
个emscripten可以把普通C/C++翻译成ASM.JS,不光是渲染的webgl程序 |
|
|
n****1 发帖数: 1136 | 6 你见过dart编出来的js长啥样么? 见过emscripten编出的js啥样么? 都是SSA式代码,
啥类型都没有.
汇编就那么几个operator, 几个寄存器, 可以等价于任何语言的一个只有+/x/and/or运
算的子集.
dart/emscripten不过是把语言全部编译成js中只包括数字的那个子集, 然后由v8机械
地转化成真正的汇编语言而已. 真不知道你们得汇编和微机原理咋学的. |
|
m*********t 发帖数: 527 | 7 这帖子偏的。。前面就不说了。从 c++ physics engine 和 java 3d 游戏
performance 扯到赚不赚钱。
就事论事,physics engine 只是 3D 游戏的核心部分之一,一般来说都用 C/C++ 来写
。因为里面不管是粒子系统,软物体(有限元),流体,动力学,全都涉及到大量的矩
阵运算(而且一般还是 sparse 的)以及相关优化问题。这些矩阵运算不仅仅是做个加
法乘法的事情。比如 linear/nonlinear complementarity problem. 而且这种运算一般
都要求 real time。
在这上面你想要怎么 call opengl 渲染爱用啥用啥,js 也好 java 也好。。。然后大
型游戏你服务器那边底层构架 code 爱用啥用啥。。。
另外,ASM.js 其实本来就不是让人自己来读的。emscripten 编译出来的接近 llvm
byte code 一样。。还记得昨天 google 主页的 pony express 游戏吧,你可以看看那
段 js 代码,就是 emscripten 搞出来的。 |
|
h*******n 发帖数: 82 | 8 STL的一堆东西(iostream)被emscripten转后生成的JS file好像上1M了太大,建议file
system可以考虑用https://github.com/floooh/oryol提供的,特别轻便。
ORYOL还挺不错的,FIPS封装了CMAKE编译,各大平台都支持,web上走emscripten。 |
|
n****l 发帖数: 3375 | 9 开个帖子科普果然没有人真的认真看
一切就是为喷而喷
在本版众多人谈论比特币之前我从来不在这个地方提比特币
因为这种小众的东西自己研究行了
我写的代码也全部是无偿贡献给社区
难道在一个整天小将老将的地方提这种专业类的事情?
敝人喜欢各种类型的东西
无论是gnuradio arduino usrp proxmark3 RaspberryPi Crazyflie开源硬件
还是jekyll angularjs emscripten openresty各种有意思的开源软件
比特币是这类话题的几百几千分之一
估计会有人说你写的都是些什么名词我听不懂
那当然,生物缩男也肯定不会把养老鼠的专业名词放了本版讨论吧?
我反正把我知道的这方面的无论优点缺点全部科普完了
再别的地方能够形成讨论气氛
本版倒好直接人身攻击
所以对本版这类人我想说话我都说到了爱听不听
以后我也懒得讲这方面的事儿
另外可以统计下本版99.99999%的比特币帖子全是这种人发的 |
|
N*******t 发帖数: 66 | 10 应该可以算虚拟机解释,但考虑到Dao
有支持即时编译的模块,可以将部分虚
拟机指令编译到机器码,所以这个解释
与编译的界限不那么明显了。当然从源
代码到虚拟机字节码这个过程也可以算
编译。
在线运行的是一个JavaScript实现的Dao
语言虚拟机,是是用Emscripten从Dao
虚拟机的C实现翻译出来的。这个JS实现
除了不支持多线程,其他特性基本上都是
完整的支持了。
当然可以支持多个文件/目录组成的程序。
同一个虚拟机环境可以多次运行不同的程序,
实际上网站上那个就是一个虚拟机环境多次
运行不同demo,直到用户刷新页面为止。
需要通讯的话,有网络模块。 |
|
|
l*********s 发帖数: 5409 | 12 this kind of stuff is completely out of my reach : -( |
|
t*****n 发帖数: 4908 | 13 c/c++ + emscripten + node.js 前后通吃 |
|
t*****n 发帖数: 4908 | 14 Emscripten是把LLVM bitcode编译成JavaScript,然后在JavaScript虚拟机里运行。所
以效率应该不差。至于是否能到native的级别,有待观察。 |
|
|
t*****n 发帖数: 4908 | 16
已经相当于汇编了,当然很大,不是一对一翻译。 |
|
s***o 发帖数: 2191 | 17 前些天看了一个用emscripten/asmjs port过来的unreal engine 的游戏demo。效果只
能用惊人来形容。
就是不知道真跑起来是不是很耗电,而且现在也只能在firefox里面才跑得动 |
|
N*******t 发帖数: 66 | 18 没以go为目标,我提到的那些特性只有defer, panic和channel是向go学的,其他在go
出来之前就有了。javascript不容易替换,要让浏览器都支持别的语言太难了。
我的虚拟机倒是可以在浏览器里运行,是通过emscripten把虚拟机的c实现翻译成了
javascript。dao网站上的demo(http://daovm.net/demo.html)就是在浏览器里跑的。 |
|
t*****n 发帖数: 4908 | 19 小心被人拍。后端不敢说,前端java没什么优势。而且emscripten吧C/C++/Pyhton/
java统统搞成js了。
5 |
|
n****1 发帖数: 1136 | 20 连着所有库一起编译成js啊, 最后的runtime已经没有python的影子了. 难道还有其他
的编译方式么?
难道在c语言里你不会写static linked executable么? 而且连C都能用emscripten编译
成js运行,有啥runtime问题? |
|
|
|
k**********g 发帖数: 989 | 23
C can be compiled to LLVM bytecode and then to Javascript via emscripten. |
|
t*****n 发帖数: 4908 | 24 emscripten,出来好久。去年版上就讨论过。我都port了好几计算项目。一个,爽! |
|
p***o 发帖数: 1252 | 25 你的解决方案似乎和通常的差别比较大,没市场自然也就没人做。
一般都手写个HAL把硬件相关的东西独立出来,剩下的都是标准C/C++,用LLVM处理成
IR再编译到你的芯片。LLVM的好处是可以从IR开始加自己的东西,啥都可以,比如
emscripten和AutoESL。 |
|
|
t****m 发帖数: 135 | 27 我还想试试emscripten,代码都不用改。 |
|
P**H 发帖数: 1897 | 28 webgl成熟的库不多。threejs算一个。cocos2d也出了web版,没用过。用过babylonjs
写过helloworld级别的,画几个球,贴几个图,主要想弄半透明的效果。
如果有c++的了,可以考虑Emscripten转。也没试过,多大的坑不知道。 |
|
r*****i 发帖数: 234 | 29 多謝,兄弟
Emscripten真是太好了,可以解決我很多問題,不用重新寫很多算法,哈哈,感謝
babylonjs |
|
|
c******n 发帖数: 16666 | 31 嗯 我知道asm.js是什么
刚才又去稍微看了下emscripten 看完了整个tutorial 不过没试着写
但是我还是之前的意见
对我而言太复杂 我这边真还有个刚结束的单场景unity webgl项目
不过当时忙着把4代一个demo改改弄出来结束
没仔细研究怎么它们是怎么编译的js
现实就是 你说如果我个人项目我自己多花点时间也行
但我们这边就是要催活 我都恨不得直接unreal的blueprint来出东西
用unity也就是不想手写webgl外加他家商店东西多
不过你这个确实有点启发 我现在在脑补这玩意下次怎么用一下这个
不都说resume-oriented-development吗?
我有个 个人项目倒是可以试一下
opengl |
|
n******7 发帖数: 12463 | 32 去年研究过emscripten
有个问题,这个东西从C转到js完美吗?
我看他例子说转个游戏一天搞定
总觉得too good too be true
不然什么firefoxOS之类的就NB大了
还有google类似的NaCl,要是都这么容易,chromeOS也不用搞playstore了吧
opengl |
|
|
n******7 发帖数: 12463 | 34 谢谢,确实相当牛逼了,值得一试
emscripten |
|
z*******n 发帖数: 1034 | 35 http://google-opensource.blogspot.com.es/2014/07/flowing-into-y
We are thrilled to announce the 1.1 release of LiquidFun, an open-source 2D
physics engine. It adds particle simulation to Erin Catto’s popular Box2D
engine, and can be used as a drop-in replacement for Box2D. If your program
is written in C++, Java, or JavaScript, you can easily use LiquidFun.
Today’s release adds some exciting new features to LiquidFun. Some
highlights:
LiquidFun now runs in your browser! Using Emscripten, we’... 阅读全帖 |
|