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操作比简单对象构造函数更快......
那么我会继续使用地图或豆类更好吗?
答案 0 :(得分:7)
你的脚本绝对毫无意义。您尝试测量的操作远远低于测量阈值。输出只是随机噪声。重复每次分配一百万次并使用System.nanoTime()
,然后您可以获得有意义的数据。
在任何情况下,如果存在显着差异,那么对于您的应用来说几乎肯定没有意义。这是过早优化的典型例子,即浪费时间。
答案 1 :(得分:2)
你的脚本什么都没有证明。它甚至没有进行任何JSON序列化/反序列化。即使使用地图和豆类之间的微观差异对您的应用程序来说意义重大,那么您还有更大的问题要担心这一点。
选择哪种方法更具可读性/可维护性/优雅性,并忘记性能差异,因为它们几乎肯定无关紧要。