» 您尚未登录:请 登录 | 注册 | 标签 | 帮助 | 小黑屋 |


 37 123
发新话题
打印

没人转吗,算是华为官方对方舟编译器的说明

posted by wap, platform: Android
https://media.weibo.cn/article?jumpfrom=weibocom&id=2309404402247382466594

内容不得不说真tm长,写的还行,还没看完,看完也不知道看不看的懂


TOP

posted by wap, platform: Chrome
说那么多有啥用,打开任何一个app都要看3秒广告,华为能干掉这个吗?



TOP

posted by wap, platform: iPhone
确实是突破性的,以后华为的手机可以获得接近ios的执行效率


TOP

Posted by Xiaomi MIX 2S
前面一大堆现状介绍都是从专业文章里面抄的,后面介绍华为的就没有任何实质性的内容

1。大数据编译器动态语义分析,编译时怎么进行动态语义分析?代码都没跑起来,是不是从哪里抄来的内容混到一起了

2。内存回收引用计数法和环消除算法,前面说华为编译器不用gc,这里又说华为破天荒用了gc里面著名的算法。还真是破天荒,java早就不用引用计数法了,而是用可达性算法(天生不存在环引用问题),华为这是开倒车?


感觉这文章就是东抄西抄凑合了一大堆文字出来,然后尬吹牛逼,这绝对不是华为官方提供的文章
本帖最近评分记录

TOP

引用:
最后,以Linux 创始人Linus Torvalds的名言结尾:

Talk is cheap. Show me the code!——空谈误国,实干兴邦!
这翻译太tm恶心了

TOP

posted by wap, platform: 小米
引用:
原帖由 @Tobar  于 2019-8-8 18:50 发表
Posted by Xiaomi MIX 2S
前面一大堆现状介绍都是从专业文章里面抄的,后面介绍华为的就没有任何实质性的内容

1。大数据编译器动态语义分析,编译时怎么进行动态语义分析?代码都没跑起来,是不是从哪里抄来的内容混到一起了

2。内存回收引用计数法和环消除算法,前面说华为编译器不用gc,这里又说华为破天荒用了gc里面著名的算法。还真是破天荒,java早就不用引用计数法了,而是用可达性算法(天生不存在环引用问题),华为这是开倒车?


感觉这文章就是东抄西抄凑合了一大堆文字出来,然后尬吹牛逼,这绝对不是华为官方提供的文章
有同感,涉及关键问题基本一句不提。
java代码直接变成机器码,指令集不一样怎么办?
难不成针对每套指令集做一套后端?这成本也太高了。
等源码出来再看。

TOP

posted by wap, platform: 小米
引用:
原帖由 @dboy99  于 2019-8-8 18:48 发表
确实是突破性的,以后华为的手机可以获得接近ios的执行效率
从何处看出来的?

TOP

引用:
原帖由 流浪的枪骑兵 于 2019-8-8 19:25 发表
posted by wap, platform: 小米
有同感,涉及关键问题基本一句不提。
java代码直接变成机器码,指令集不一样怎么办?
难不成针对每套指令集做一套后端?这成本也太高了。
等源码出来再看。
就是每套指令集做一套后端

三段式编译
高等程序语言-中间码-可执行代码
不同的高等语言用对应的解释器转化成中间码
而不同的指令集用对应优化器生成最终可执行代码

方舟按照之前的描述,主要改动有两个,一个是前端支持混合编译,而且混的相当彻底,把java自带机制都砸了;
另一个就是软件开发者以中间码提交,这本身按照三段式编译来说是不难的,但是现实没那么美好,本来三段式都在本地进行,那么调试还是比较便利的,但是递交发行那后端优化就脱离源代码了呀。除非真的做到单一环境下通过即可编译到其他指令集其他优化配置不需调试,那就非常黑科技,真做到可以说解决了编译这件事的万年毒瘤,怎么吹都不过分。

TOP

外行不评论

能华为实机出来再说吧

TOP

引用:
原帖由 Tobar 于 2019-8-8 18:50 发表
Posted by Xiaomi MIX 2S
前面一大堆现状介绍都是从专业文章里面抄的,后面介绍华为的就没有任何实质性的内容

1。大数据编译器动态语义分析,编译时怎么进行动态语义分析?代码都没跑起来,是不是从哪里抄来的内容 ...
具体不清楚,但是肯侵犯用户隐私做到这点并不难,编译的时候埋一些带编号的计数器暗桩,联网把计数同步到服务器,华为看一下手里的中间码对应的暗桩编号,就完成自学习了。

TOP

posted by wap, platform: 小米
引用:
原帖由 @卖哥  于 2019-8-8 21:32 发表
就是每套指令集做一套后端

三段式编译
高等程序语言中间码可执行代码
不同的高等语言用对应的解释器转化成中间码
而不同的指令集用对应优化器生成最终可执行代码

方舟按照之前的描述,主要改动有两个,一个是前端支持混合编译,而且混的相当彻底,把java自带机制都砸了;
另一个就是软件开发者以中间码提交,这本身按照三段式编译来说是不难的,但是现实没那么美好,本来三段式都在本地进行,那么调试还是比较便利的,但是递交发行那后端优化就脱离源代码了呀。除非真的做到单一环境下通过即可编译到其他指令集其他优化配置不需调试,那就非常黑科技,真做到可以说解决了编译这件事的万年毒瘤,怎么吹都不过分。
真要是这样,这工作量确实无法想象
光前端就很麻烦了,这中间代码得复杂成什么样
另外这种做法不知道会不会影响java的一些特殊特性,比如反射之类

TOP

引用:
原帖由 Tobar 于 2019-8-8 18:50 发表
Posted by Xiaomi MIX 2S
前面一大堆现状介绍都是从专业文章里面抄的,后面介绍华为的就没有任何实质性的内容

1。大数据编译器动态语义分析,编译时怎么进行动态语义分析?代码都没跑起来,是不是从哪里抄来的内容 ...
1、动态语义分析可以说是这次最有看头的地方,等开源了看大佬分析了,毕竟确实做出来了;
2、引用计数我认为远比java的暂停回收式gc好用多了,对内存的利用效率高多了。对于鸿蒙系统(方舟肯定是为鸿蒙服务的)这样的实时系统来说,几乎是唯一适合的gc模型。唯一的问题是循环引用的问题,但这其实是少数情况,可以单独处理。python是采用这样的,rust也是这种。
3、方舟我认为最牛逼的还是对多语言的融合,这个我觉得不会是完全创新,应该有llvm的底子,但是能够融合java、c/c++等,抛开傻逼透顶的jni,可以说功德无量了,同样,等开源了看大佬的分析。

[ 本帖最后由 masterfish 于 2019-8-9 06:51 编辑 ]

TOP

引用:
原帖由 流浪的枪骑兵 于 2019-8-8 19:25 发表
posted by wap, platform: 小米
有同感,涉及关键问题基本一句不提。
java代码直接变成机器码,指令集不一样怎么办?
难不成针对每套指令集做一套后端?这成本也太高了。
等源码出来再看。
几个关键技术都提了,只是没有技术细节而已:
【1】gc垃圾回收采用引用计数,这就可以脱离java的沉重蜗牛壳的gc了;
【2】多语言联合编译,这是通过自创的中间语言IR来融合,能够摆脱狗屁的jni,可以说功德无量;
【3】指令集的问题没看源码不知道,但是对于华为来说,完全没有压力,因为它只需要做一套(arm)的就可以了,开源出来,也是可以让其他厂商可以自己做其他指令集的扩展。

TOP

引用:
原帖由 睡睡平安 于 2019-8-8 20:42 发表
posted by wap, platform: 小米
从何处看出来的?
从一开始就看出来了。
ios的app是:编写程序--》编译成机器码--》安装到手机--》直接运行机器码;
安卓的app是:编写程序--》编译成字节码--》安装到手机--》运行时部分编译为机器码,再运行机器码;
你可以看到其中的效率问题。
虽然google已经对此有很大的改善,但是这个基本上还是没有本质的改变,可以说是安卓系统的原罪,但对于google来说这又不得不做,因为google不做手机,不同手机商的硬件不同,机器码也不同,编译为机器码就会导致兼容性的问题。
华为的工作,就是直接把安卓的整个过程变得和ios一样了,直接在开发机上就编译为机器码,安装的时候就是机器码,可以全速运行。
问题就是这样就导致app开发商会很头疼,因为要针对每个不同的手机厂家编译特定的版本了,这就会导致安卓app版本的分裂。
华为为什么会开源,估计就是不想背这个分裂安卓阵营的锅。

TOP

引用:
原帖由 卖哥 于 2019-8-8 21:32 发表

就是每套指令集做一套后端

三段式编译
高等程序语言-中间码-可执行代码
不同的高等语言用对应的解释器转化成中间码
而不同的指令集用对应优化器生成最终可执行代码

方舟按照之前的描述,主要改动有两个, ...
现在看华为还是不敢做后一个,方舟编译还是在程序员的开发机上进行的,毕竟融合多语言,以及解析java动态语义必须参考源代码。

TOP

 37 123
发新话题
     
官方公众号及微博