我正在声明一个 MultiMap,并想知道将键设置为 Integer 是否是一个好主意。使用整数键与字符串键会加快检索值的速度吗?
MultiMap<String, Order> mmCustomerOrders = hz.getMultiMap("customerOrders");
对比
MultiMap<Integer, Order> mmCustomerOrders = hz.getMultiMap("customerOrders");
谢谢。
最佳答案
它可能会加快速度,特别是根据字符串的长度和复杂性。简单的 ASCII 字符串很容易编码/解码,但如果你有非 ASCII 字符,那就有点复杂了。 但即使在 Integers 上,您也很有可能必须始终创建 Integer 对象,因为值太高,您可以通过覆盖默认的 Integer 缓存大小“java.lang.Integer”来解决此问题(如果您知道范围) .IntegerCache.high”。将其设置为高于 127 会增加预分配整数数量的大小。
实际上,它是否对您产生真正的速度差异的问题不仅仅取决于序列化。我会尝试是否对您有差异,否则我会认为这是过早的优化。如果您的对象非常复杂,情况会有所不同,但对于 String 和 Integer 来说,它不会给您带来真正的好处。
关于java - Hazelcast ConcurrentMap/MultiMap 键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23256919/