version 0.7.0-p2 ``` scala import org.msgpack.value._ object Main { def mapValueEqualsTime(size: Int): Unit = { val keyValues: Array[Value] = (1 to size).flatMap{ key => Seq(ValueFactory.newString(key.toString), ValueFactory.nilValue()) }.toArray val map1, map2 = ValueFactory.newMap(keyValues) println(size) System.gc val start = System.nanoTime map1 == map2 println((System.nanoTime - start) / 1000000.0) println } def main(args: Array[String]) { mapValueEqualsTime(10) mapValueEqualsTime(100) mapValueEqualsTime(1000) mapValueEqualsTime(10000) mapValueEqualsTime(100000) } } ``` result ``` 10 1.634357 100 4.078424 1000 10.137222 10000 183.871329 100000 22959.867596 ```
Activity
xerial commentedon Jun 23, 2015
New MapValue.equals is implemented by translating the value into a Map:
https://github.com/msgpack/msgpack-java/blob/v07-develop/msgpack-core/src/main/java/org/msgpack/value/impl/ImmutableMapValueImpl.java#L137-137
This implementation still might have this performance problem.