注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号 
x
Graalvm 是去年Oracle公开源码的一个虚拟机项目。其优点有:
- 融合多种语言的运行。而且是Zero overhead interoperability。多种语言包括Java, JavaScript, Ruby, R, Python, Native libraries(C或C++编译)可以转化成能在包括JVM,Node, Oracle, MySQL(对,在数据库平台通过Graal虚拟机)等平台上尤其是转化成native executable,直接就可以在操作系统平台上运行。这样多种语言的边界就变得非常模糊了。融合听上去非常有潜力。
- 速度更快(hhh。。。)
![]()
目前仍然在RC状态,还有很多问题未解决:
https://github.com/oracle/graal/ ... tevm/LIMITATIONS.md
貌似R和Ruby这样的语言要受益很多。
关于速度,我做了个测试,一个N!的DFS程序,JRE运行35秒,一次性转化成native executable后这个executable的运行反而要150秒。
- /tmp/graalvm $ ls -l
- total 12
- -rw-r--r-- 1 test test 5452 Mar 21 22:39 ValidSequence.java
- -rw-r--r-- 1 test test 26 Mar 21 22:39 input.txt
- /tmp/graalvm $ javac ValidSequence.java
- /tmp/graalvm $ native-image ValidSequence # 一次性把java class转化为native的executable
- Build on Server(pid: 435, port: 43491)*
- [validsequence:435] classlist: 6,035.28 ms
- [validsequence:435] (cap): 3,573.66 ms
- [validsequence:435] setup: 6,825.29 ms
- [validsequence:435] (typeflow): 6,562.13 ms
- [validsequence:435] (objects): 1,455.95 ms
- [validsequence:435] (features): 289.98 ms
- [validsequence:435] analysis: 8,481.65 ms
- [validsequence:435] universe: 328.38 ms
- [validsequence:435] (parse): 1,871.64 ms
- [validsequence:435] (inline): 1,606.91 ms
- [validsequence:435] (compile): 14,541.84 ms
- [validsequence:435] compile: 18,407.56 ms
- [validsequence:435] image: 651.13 ms
- [validsequence:435] write: 540.47 ms
- [validsequence:435] [total]: 41,841.11 ms
- /tmp/graalvm $ ls -l
- total 2512
- -rw-rw-r-- 1 test test 5889 Mar 21 22:39 ValidSequence.class
- -rw-r--r-- 1 test test 5452 Mar 21 22:39 ValidSequence.java
- -rw-r--r-- 1 test test 26 Mar 21 22:39 input.txt
- -rwxrwxr-x 1 test test 2549792 Mar 21 22:40 validsequence # 这是native的executable, disk footprint倒是变小了。
- /tmp/graalvm $ time java -cp . ValidSequence
- aaaaaaaaaaaa bcdefghijklm
- 479001600
- real 0m34.981s
- user 0m37.760s
- sys 0m2.850s
- /tmp/graalvm $ time ./validsequence
- aaaaaaaaaaaa bcdefghijklm
- 479001600
- real 2m27.306s
- user 2m26.550s
- sys 0m0.400s
复制代码
|