-
Notifications
You must be signed in to change notification settings - Fork 852
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
性能变差了 #96
Comments
是的,由于一些新特性的引入,导致整体性能受到影响,这块会单独做一个版本优化。目前这个性能暂时也是可以接受的。 |
同样的逻辑,执行效率比 fast-el满了 快100倍。感觉还有很大的调优空间。。
|
实现原理是不一样的, aviator 是动态类型,FEL 的编译本质上是生成 java 代码,再调用编译器编译,具体原因参见我很早写的一篇博客 http://www.blogjava.net/killme2008/archive/2011/09/17/358863.html aviator 有自己的类型系统,而 FEL 是没有的,灵活和性能的平衡。 不过 aviator 要做到 fel 的性能也完全可能,在编译的时候,让用户标注变量类型就可以生成和 java 代码一模一样的字节码,只不过这个优化,我暂时觉的没有太大必要,不准备做一个面面俱到的东西,保持动态性和灵活性,兼顾比解释型更好的性能即可,性能优化会继续做下。 |
加油! |
顺带说下, |
恩,优化会继续做下,几个比较容易做的:
|
发布了 4.1.1 ,对比 4.1.0 有 30% 左右的提升。类型标注的优化,暂时先不做了,做了个原型测试,类型标注下的优化跟原生 java 是一样的,但是会带来比较高的复杂度。 |
确实,从3.3.0升级到4.1.1,随机比大小,耗时差不多是7倍差距。 |
@blueskea 这个差距不大可能那么大,请给出测试代码。 |
我写了一个简单测试
跑下来 , 4.1.1 反而更快的。 |
3.3.0
4.1.1
两者基本是接近的。 |
@killme2008 不知道是不是我代码有问题
3.3.0:
4.1.1:
|
@blueskea 非常感谢反馈,这里是一个 bug,原来这种全部是常量的表达式会直接在编译器折叠成最终结果,在 4.0 版本里这块逻辑处理引入了一个 bug,额外创建了不必要的 class,我马上修复下。 |
已在最新开发分支 #102 修复,测试来看比 3.3.0 更快 开发分支: Cost Time : 1313
Cost Time : 239
Cost Time : 265
Cost Time : 201
Cost Time : 331 3.3.0 Cost Time : 1665
Cost Time : 480
Cost Time : 447
Cost Time : 669
Cost Time : 467 |
@killme2008 非常感谢!! |
The text was updated successfully, but these errors were encountered: