不都是gcc编译的吗,恕我没看懂,不闲麻烦介绍下
在SDF上还能遇到Emacs大牛 厉害
这个是把el文件编译成linux的elf 二进制格式代码.
| name | byte-code | native-bench | native-all | native-all vs. |
|-----------------------|-----------|--------------|------------|----------------|
| | (sec) | (sec) | (sec) | byte-code |
| bubble | 30.44 | 6.54 | 6.29 | 4.8x |
| bubble-no-cons | 42.42 | 10.22 | 10.20 | 4.2x |
| fibn | 39.36 | 16.96 | 16.98 | 2.3x |
| fibn-rec | 20.64 | 8.06 | 7.99 | 2.6x |
| fibn-tc | 19.43 | 6.33 | 6.89 | 2.8x |
| inclist-tc | 20.43 | 2.16 | 2.18 | 9.4x |
| listlen-tc | 17.66 | 0.66 | 0.70 | 25.2x |
| inclist-no-type-hints | 45.57 | 5.60 | 5.81 | 7.8x |
| inclist-type-hints | 45.89 | 3.67 | 3.70 | 12.4x |
| nbody | 112.99 | 23.65 | 24.44 | 4.6x |
| dhrystone | 112.40 | 64.67 | 47.12 | 2.4x |
| tot | 507.23 | 148.52 | 132.3 | 3.8x |
感觉超cool啊,希望不要突然暴毙。。
archlinux上有这个包,希望能发展起来吧,还有就是希望gcc版本兼容性能有所改善。
有人知道这个编译错误怎么处理吗?
/usr/lib/gcc/x86_64-linux-gnu/9/libgccjit.so: undefined reference to `lang_register_spec_functions()'
这个测试的什么?我只看懂了时间
字节码 二进制测试用例 全部二进制
我想问的是左边第一列都测试是啥项目
冒泡,菲波那切等经典考验cpu的算法...
不过我好奇的是性能才提高几倍啊,什么时候 Windows、mscOS 一起支持了,把默认库都编译成 native 的,性能应该会好上不少。第三方包如果要编译估计要麻烦些,时间估计要长一些,如果集成进 Emacs 就好了。
你一说就明白了,文化低哈哈
不知道有这个功能以后是不是就不用dump了w w w
对啊,比 dump 方案感觉优雅很多,dump方案改一下要全部 dump,好麻烦。
这个改了一个库,其他库依赖这个库的macro or inline function的话,那些库也要重新编译啊。如果编译时间太长,那就不可忍受了
另外dump本质还只是改善了加载速度而已,执行速度没变
编译速度确实是个问题,所以我认为内置的库可以预编译一起发布,就跟 dump 差不多了。启动和运行速度都会有提升,第三方包安装可能要分情况。
其实byte-compiler也有改进空间
浅析Elisp中的compiler macro - #13,来自 LdBeth
Elisp的byte-compiler居然是用elisp写的,一共是
-
bytecomp.el
编译器,不解释,除了编译,还要处理byte-run.el
里的如with-no-warnings
的compiler intrinsics -
byte-opt.el
naive优化器,做一些简单的优化。比如对于pure function,如果参数全部是常量,那么这个函数会在编译期计算好。 -
cconv.el
闭包转换器,其实也会做一点优化,比如闭包不用跨函数传递的就直接用lambda lifting,而不用capture。 -
macroexp.el
宏展开器,主要是macroexpand-all
,此外还提供一些编写宏相关的辅助功能,常用的大概有macroexp-let2
5 个赞