मैं 10000000 समय के लिए एक हैश मानचित्र पर एक कुंजी जोड़ता हूं। यहाँ जावा कोड और आउटपुट है:क्लोजर में जावा देशी हैश मैप धीरे-धीरे क्यों चलते हैं?
import java.util.HashMap;
public class TestMap {
public static void main(String[] args) {
HashMap<Integer, Integer> mp = new HashMap<Integer, Integer>();
long start = System.currentTimeMillis();
for (int i = 0; i < 10000000; i++) {
mp.put(1, 1);
}
long end = System.currentTimeMillis();
System.out.println("Elapsed time: " + (end - start) + " msecs");
}
}
$ javac TestMap.java && java -cp . TestMap
Elapsed time: 38 msecs
और फिर मैं आरईपीएल में clojure से जावा फोन:
user=> (import java.util.HashMap)
java.util.HashMap
user=> (def mp (HashMap.))
#'user/mp
user=> (time (dotimes [n 10000000] (.put mp 1 1)))
"Elapsed time: 10024.797 msecs"
nil
दोनों कोड एक ही बात करते हैं, लेकिन clojure संस्करण exstreamly धीमी गति से चलाता है !!
समस्या क्या है?
बीटीडब्ल्यू भयानक यह क्लोजर में केवल 3 लाइनें (और पढ़ने के लिए बहुत आसान) है। – erturne