ninja 已被脚本正确从github下载,但在编译 maple_engine 时 出现这个。
正在使用ubuntu 16.04 重试...
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
相当给力
ubuntu18也会有奇怪的问题,所以,只有ubuntu16才能正常编译
很高兴您在Ubuntu 16.04上能成功地编译和运行。没有在Ubuntu 18.04上遇到您提到的问题。
建议执行Readme.md中的命令安装一下依赖的软件包试一下。
sudo apt install -y build-essential clang cmake libffi-dev libelf-dev libunwind-dev \
libssl-dev openjdk-8-jdk-headless unzip python-minimal python3
@Maple_YZhang 这个是执行过的😂
从您贴的信息看,如下的Python命令运行出错。也许Python环境有问题?
@Maple_YZhang 包管理自动安装的,具体就不清楚了。
@Maple_YZhang 我在进行简单的性能测试, import java.util.Random 无法使用,运行时报错:
Exception in thread "main" java.lang.ExceptionInInitializerError
从您贴的信息看,如下的Python命令运行出错。也许Python环境有问题?
@Maple_YZhang 另一个问题,方舟编译器是否做了内存占用限制?我在进行性能测试时,方舟编译器编译的程序运行时内存占用最高只有270M左右(并且非常慢慢的完成测试),而openjdk达到了1G左右,并且瞬间完成测试。
@Maple_YZhang 我在进行简单的性能测试, import java.util.Random 无法使用,运行时报错:
Exception in thread "main" java.lang.ExceptionInInitializerError
@MSGXingKong 谢谢,会尽快修复。
@Maple_YZhang 另一个问题,方舟编译器是否做了内存占用限制?我在进行性能测试时,方舟编译器编译的程序运行时内存占用最高只有270M左右(并且非常慢慢的完成测试),而openjdk达到了1G左右,并且瞬间完成测试。
@MSGXingKong 没有内存占用限制,但会根据程序的需要去占用内存。
@Maple_YZhang 那么方舟编译后的程序运行效率有提升嘛?
我做了个简单的测试,生成一亿个1,并对其进行排序,方舟编译的程序内存溢出了。
@MSGXingKong 没有内存占用限制,但会根据程序的需要去占用内存。
@Maple_YZhang
看这里惹:
https://clinux.co/d/95/5
楼主的测试……
@MSGXingKong
且慢,为什么java显示是10002,而方舟显示是1000002?
斐波那契数列, 到35就变得非常慢了, 是不是限制了栈。。。
@wconly 代码失误,这是新结果
@MSGXingKong
随便瞎说几句自己的想法,不代表社区看法惹……
官方示例都跑了一遍,就是反射有点儿问题。我用的是虚拟机,就不折腾有关性能的东东惹。但是,另外还有个原因,这个所谓的引擎,我的理解就是一种以解释方式来跑代码的,相对java的虚拟机而言,它还要额外进行rc有关操作,而且你这个示例还创建了那么多对象,rc的过程想必不会少。所以这个性能可以预想惹……
这个引擎目前给出的原因,一个是可以让产物跑起来,往远了说感觉就跟flutter差不多,用解释的方式进行开发,因为可以动态调试,实际发布时直接aot。而目前给出的也就是这个解释方式所需要引擎。
至于您反映的这个问题,我觉得可以偷师一下苹果平台……
当然,上面都是我猜的,具体还要等开源惹……
@wconly 我简单的测试了反射,没有问题。
@MSGXingKong
奇了葩了,人品问题?气cry……
不知道你的反射测试是怎么做的,我是这样做的:
#I1OMOC:编译openjdk时可能碰到的两个小patch#note_2873229
有时间试一试?
@wconly
调用方法是没问题的,其他的没细测public class Main { public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException { Class c = Class.forName("F"); F f = (F) c.newInstance(); f.p(); } } class F { void p(){ System.out.println("ok"); } }
@MSGXingKong
先Class.forName("java.lang.String")
后getDeclaredMethods()
然后爆炸
你有时间请试一试看跑的通吗?
Class c = Class.forName("java.lang.String"); System.out.println(c.getDeclaredMethods().length);
@MSGXingKong
从别的地方偷来的……
javac、java没问题……
import java.lang.reflect.*;
public class Main {
public static void main(String args[]) {
try {
Class c = Class.forName("java.lang.String");
Method m[] = c.getDeclaredMethods();
for (int i = 0; i < m.length; i++)
System.out.println(m[i].toString());
}
catch (Throwable e) {
System.err.println(e);
}
}
}
失败。
@wconly
@MSGXingKong @Maple_YZhang
对吧,那问题基本就锁定在循环下的
System.out.println(m[i].toString());
这一句惹……
所以我当时以为反射是有问题的,这样来看,问题似乎不在反射本身惹?
@wconly 看起来是的。
@MSGXingKong @Maple_YZhang
已经爱负责人员惹,让他们来看一看吧
至少你说的是对的,反射这块基本没问题惹(我当时看爆炸了就没再细找问题,真是不努力惹……气cry)
但是根据这个示例以及你引用java.util.Random的情况来看,似乎是调用jdk api的时候还是有点儿问题……
@MSGXingKong @Maple_YZhang
已经爱负责人员惹,让他们来看一看吧
至少你说的是对的,反射这块基本没问题惹(我当时看爆炸了就没再细找问题,真是不努力惹……气cry)
但是根据这个示例以及你引用java.util.Random的情况来看,似乎是调用jdk api的时候还是有点儿问题……
@wconly @MSGXingKong 的确是这样,问题出在m[i].toString()
。
@wconly @MSGXingKong 的确是这样,问题出在
m[i].toString()
。
@Maple_YZhang
加油惹~
另外等一个lambda,试了一个简单的示例,发现还是有问题(当然也许现在还不支持),问题是程序没有爆掉,但是并不显示任何内容惹:
public class lambda {
public static void main(String args[]) {
new Thread(() -> System.out.println(9527)).start();
try {
Thread.sleep(6000);
} catch (InterruptedException e) {
System.out.println("INTERRUPTED_MESSAGE");
}
}
}
@Maple_YZhang Random、HttpURLConnection、Scanner 等等,都挂掉了😂
@Maple_YZhang Random、HttpURLConnection、Scanner 等等,都挂掉了😂
@MSGXingKong @wconly 都看到了,尽快修复。谢谢提供这些失败用例!
@MSGXingKong
随便瞎说几句自己的想法,不代表社区看法惹……
官方示例都跑了一遍,就是反射有点儿问题。我用的是虚拟机,就不折腾有关性能的东东惹。但是,另外还有个原因,这个所谓的引擎,我的理解就是一种以解释方式来跑代码的,相对java的虚拟机而言,它还要额外进行rc有关操作,而且你这个示例还创建了那么多对象,rc的过程想必不会少。所以这个性能可以预想惹……
这个引擎目前给出的原因,一个是可以让产物跑起来,往远了说感觉就跟flutter差不多,用解释的方式进行开发,因为可以动态调试,实际发布时直接aot。而目前给出的也就是这个解释方式所需要引擎。
至于您反映的这个问题,我觉得可以偷师一下苹果平台……
当然,上面都是我猜的,具体还要等开源惹……
@wconly 分析基本是正确的。
@wconly 你从mpl文件可以发现lambda函数没被调用。这是因为前端jbc2mpl还开发中,肯定会支持的。
@luoyin @杨欢
@HuWen
您好,之前多有得罪,不过不那么说的话,openjdk的那几个指令不知何时才能支持惹,嘻嘻~[滑稽]
望尽快解决java sdk api调用过程中的种种问题惹……
@HuWen
您好,之前多有得罪,不过不那么说的话,openjdk的那几个指令不知何时才能支持惹,嘻嘻~[滑稽]
- 另外,看了当前mapleall与maple_engine的开放情况,感觉是可以直接跑二进制形式的?这样就可以大致测一下效率惹?(虽然可能一些优化还未全开)
- 但是修改mapleall采用x86后端的过程中,发些许多代码都需要调整,有时候调用的头文件及函数名都差几个字符,看起来是有过多次调整,完整度也对的上,但就是需要做相应的调整,让它能顺利跑起来,不知实际上x86后端开源情况如何?
- 另外,maple_engine几日没有更新了,调用java sdk api的问题依然没有解决,追了追,似乎是libffi那里调用出了问题?开源不完整,用gdb追起来太麻烦了,希望能立即更正这一点。(内部有完整代码,调试起来似乎没有什么太大难度,但是外面跑不起来风言风语就太多了……)
- maple_engine在内部是否也是这样逐一解释maple ir的,用libffi去__engine__shim?这样似乎说不通?因为速度太慢惹……换句话说,内部是否像方舟环境一样有maple_engine的完整实现,而不是这样用些额外组件临时搭建起的不成熟的东东?
- 国外似乎也有一些类似叫maple engine的项目,这样会不会有什么问题?
望尽快解决java sdk api调用过程中的种种问题惹……
@wconly 八月四日会有更新推出。OpenArkCompiler支持AArch64指令生成,而Maple引擎X86_64下目前只支持Maple IR指令,注重多语言执行环境的支持。Maple debugger会在几周后推出,便于调试。最后一个问题,要由律师确定。
@HuWen
您好,之前多有得罪,不过不那么说的话,openjdk的那几个指令不知何时才能支持惹,嘻嘻~[滑稽]
- 另外,看了当前mapleall与maple_engine的开放情况,感觉是可以直接跑二进制形式的?这样就可以大致测一下效率惹?(虽然可能一些优化还未全开)
- 但是修改mapleall采用x86后端的过程中,发些许多代码都需要调整,有时候调用的头文件及函数名都差几个字符,看起来是有过多次调整,完整度也对的上,但就是需要做相应的调整,让它能顺利跑起来,不知实际上x86后端开源情况如何?
- 另外,maple_engine几日没有更新了,调用java sdk api的问题依然没有解决,追了追,似乎是libffi那里调用出了问题?开源不完整,用gdb追起来太麻烦了,希望能立即更正这一点。(内部有完整代码,调试起来似乎没有什么太大难度,但是外面跑不起来风言风语就太多了……)
- maple_engine在内部是否也是这样逐一解释maple ir的,用libffi去__engine__shim?这样似乎说不通?因为速度太慢惹……换句话说,内部是否像方舟环境一样有maple_engine的完整实现,而不是这样用些额外组件临时搭建起的不成熟的东东?
- 国外似乎也有一些类似叫maple engine的项目,这样会不会有什么问题?
望尽快解决java sdk api调用过程中的种种问题惹……
@wconly github上面我们有个mirror,你可以注意一下是不是我们的mirror.
登录 后才可以发表评论