微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

mysql – Groovy性能

你好
我们将开始一个CRUD项目.
我有一些经验使用groovy和
我认为这是正确的工具.
我关心的是表现.
java解决方案相比,groovy有多好.
据估计,我们最多可以有100个
同时用户.我们打算用一个
MySql DB和一个tomcat服务器.

有任何意见或建议吗?

谢谢

解决方法:

我最近在Groovy表现的答案上收集了五个反对票(!);但是,我认为确实需要客观事实.就个人而言,我认为使用Groovy和Grails工作既有效又有趣;然而,存在一个需要解决性能问题.

网上有许多基准比较,包括this one.你永远不会相信单一的基准(而且引用的基准甚至不接近科学),但你会明白这一点.

Groovy强烈依赖于运行时元编程.例如,Groovy中的每个对象(除了Groovy脚本之外)都从GroovyObject延伸到其invokeMethod(..)方法.每次在Groovy类中调用方法时,都不会像在Java中那样直接调用方法,而是通过调用前面提到的invokeMethod(..)(它执行大量的反射和查找).
此外,每个GroovyObject都有一个关联的MetaClass.方法调用等的概念是类似的.

与Java相比,还有其他因素会降低Groovy性能,包括原始数据类型的装箱和(可选)弱类型,但前面提到的运行时元编程概念至关重要.您甚至不能想到使用Groovy的JIT编译器,它将Java字节码编译为本机代码以加快执行速度.

解决这些问题,有Groovy++项目.您只需使用@Typed注释Groovy类,它们将被静态编译为(实际)Java字节码.不幸的是,我发现Groovy还不是很成熟,并且与主要的Groovy系列和IDE没有很好的集成. Groovy也与基本的Groovy编程范例相矛盾.此外,Groovy的@Typed注释不能递归地工作,也就是说,不会影响GORM或Grails控制器基础结构等底层库.

我猜你也正在评估使用Grails项目.

在查看Grails的GORM时,该框架大量使用运行时元编程,直接使用Hibernate,应该可以更好地执行.

在控制器或(特别是)服务级别,可以将大量计算外部化到java类.但是,GORM在典型CRUD应用中的比例更高.

Grails中的潜在性能通常通过在database级别缓存层或通过避免调用服务或控制器方法解决(请参阅SpringCache pluginCache Filter plugin).这些通常在Ehcache infrastructure之上实现.
显然,缓存可以很好地适应静态数据,而不是经常更改的(数据库)数据,或者是相当可变的Web输出.

最后,你可以“向它投掷硬件”.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐