Groovy:Groovy Bean创建比java.util.Map创建更长?

时间:2010-08-03 11:39:51

标签: groovy

class Test {
    String field
    int num

    public Test (String field, int num) {
        this.field = field
        this.num = num
    }
}

def start = System.currentTimeMillis()

def testObj = new Test("i'm field", 1)

println "Beans: ${System.currentTimeMillis() - start}"

def start2 = System.currentTimeMillis()

def map = [:]
map.field = "i'm field"
map.num = 1

println "Maps: ${System.currentTimeMillis() - start2}"

输出是:

Beans: 3
Maps: 0

我的Grails服务器通过JSON进行通信。我正在使用地图< - > JSON转换,但我认为使用bean会更好,因为在地图情况下你必须调用多个put()方法......

但是简单的脚本显示Map创建和两个put操作比简单对象构造函数更快......

那么我会继续使用地图或豆类更好吗?

2 个答案:

答案 0 :(得分:7)

你的脚本绝对毫无意义。您尝试测量的操作远远低于测量阈值。输出只是随机噪声。重复每次分配一百万次并使用System.nanoTime(),然后您可以获得有意义的数据。

在任何情况下,如果存在显着差异,那么对于您的应用来说几乎肯定没有意义。这是过早优化的典型例子,即浪费时间。

答案 1 :(得分:2)

你的脚本什么都没有证明。它甚至没有进行任何JSON序列化/反序列化。即使使用地图和豆类之间的微观差异对您的应用程序来说意义重大,那么您还有更大的问题要担心这一点。

选择哪种方法更具可读性/可维护性/优雅性,并忘记性能差异,因为它们几乎肯定无关紧要。