我正在声明一个MultiMap,并想知道将密钥作为Integer是否是一个好主意。将使用Key as Integer vs key作为String来加速检索值?
MultiMap<String, Order> mmCustomerOrders = hz.getMultiMap("customerOrders");
VS
MultiMap<Integer, Order> mmCustomerOrders = hz.getMultiMap("customerOrders");
THX。
答案 0 :(得分:1)
它可能会加速一点,特别是取决于字符串的长度和复杂性。简单的ASCII字符串很容易编码/解码,但如果你有非ASCII字符,它会有点复杂。 但是即使在Integers上,你很有可能一直都要创建Integer对象,因为值很高,你可以通过覆盖默认的Integer缓存大小来解决这个问题(如果你知道一个范围)&#34 ; java.lang.Integer.IntegerCache.high&#34 ;.将此值设置为高于127会增加预分配的整数数量。
实际上,如果它对你产生真正的速度差异的问题取决于序列化。我会尝试,如果你有所不同,否则我会认为它是过早的优化。如果您的对象非常复杂,那将会有所不同,但对于String和Integer,它不应该给您带来真正的好处。