你好
我们将开始一个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 plugin或Cache Filter plugin).这些通常在Ehcache infrastructure之上实现.
显然,缓存可以很好地适应静态数据,而不是经常更改的(数据库)数据,或者是相当可变的Web输出.
最后,你可以“向它投掷硬件”.
原文地址:https://codeday.me/bug/20190715/1472084.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。