你好, 我们将要开始一个CRUD项目。 我有一些使用Groovy的经验, 我认为这是正确的工具。 我的担心在于性能。 与Java解决方案相比,Groovy有多好。 据估计,我们最多可以有100个同时用户。 我们将使用MySql数据库和Tomcat服务器。
有任何评论或建议吗?
谢谢
你好, 我们将要开始一个CRUD项目。 我有一些使用Groovy的经验, 我认为这是正确的工具。 我的担心在于性能。 与Java解决方案相比,Groovy有多好。 据估计,我们最多可以有100个同时用户。 我们将使用MySql数据库和Tomcat服务器。
有任何评论或建议吗?
谢谢
GroovyObject
,其中包含invokeMethod(..)
方法。例如,在调用Groovy类中的方法时,方法不会像Java一样直接被调用,而是通过调用前面提到的invokeMethod(..)
来调用(它执行了许多反射和查找操作)。GroovyObject
都有一个关联的MetaClass
。方法调用等概念类似。@Typed
,它们就会被 (真正的) Java 字节码 静态地 编译。然而,不幸的是,我发现 Groovy++ 还不够成熟,与主要的 Groovy 线和 IDE 集成不好。此外,Groovy++ 违反 基本的 Groovy 编程范例。此外,Groovy++ 的 @Typed
注释不递归工作,也就是说,不影响底层库,如 GORM 或 Grails 控制器基础结构。
我猜你也在考虑使用 Grails 项目。
在查看 Grails 的 GORM 时,该框架大量使用运行时元编程,直接使用 Hibernate,应该表现更好。
在控制器或(尤其是)服务级别,可以将广泛的计算外部化到 Java 类中。但是,在典型的 CRUD 应用程序中,GORM 的比例更高。
在Grails中,潜在的性能问题通常通过在数据库级别上设置缓存层或避免调用服务或控制器方法来解决(参见SpringCache插件或Cache Filter插件)。这些通常是建立在Ehcache基础架构之上的。class Hello {
def getGreeting(name) {
"Hello " + name
}
}
被编译成
public class Hello
implements GroovyObject
{
public Hello()
{
Hello this;
CallSite[] arrayOfCallSite = $getCallSiteArray();
}
public Object getGreeting(Object name) {
CallSite[] arrayOfCallSite = $getCallSiteArray();
return arrayOfCallSite[0].call("Hello ", name);
}
static
{
Long tmp6_3 = Long.valueOf(0L);
__timeStamp__239_neverHappen1288962446391 = (Long)tmp6_3;
tmp6_3;
Long tmp20_17 = Long.valueOf(1288962446391L);
__timeStamp = (Long)tmp20_17;
tmp20_17;
return;
}
}
50到100个活跃用户并不算太多的流量。只要您正确缓存页面,mysql查询正确索引,您应该没问题。
这是我在地下室运行的一个站点,使用了一台价值1000美元的服务器,它是用Grails编写的。 请自行检查性能 http://www.ewebhostguide.com
注意:有时Comcast连接会中断,网站可能会出现故障。但这只会持续几分钟。在地下室运行网站的缺点。