(println "def") (def seed 256) (dotimes[i 3] […]
(println "def") (def seed 256) (dotimes[i 3] […]
(println "def")(def seed 256)(dotimes[i 3](def rnd seed)(time(loop[i 0](when(< i 10000000)(def rnd (mod (+(* 7 rnd) 13) 9564))(recur(inc i)))))(println rnd))(println "with-local-vars")(dotimes[i 3](with-local-vars [rnd seed](time(loop[i 0](when(< i 10000000)(var-set rnd (mod (+(* 7 @rnd) 13) 9564))(recur(inc i)))))(println @rnd)))(println "atom")(dotimes[i 3](let [rnd (atom seed)](time(loop[i 0](when(< i 10000000)(reset! rnd (mod (+(* 7 @rnd) 13) 9564))(recur(inc i)))))(println @rnd)))(println "volatile!")(dotimes[i 3](let [rnd (volatile! seed)](time(loop[i 0](when(< i 10000000)(vreset! rnd (mod (+(* 7 @rnd) 13) 9564))(recur(inc i)))))(println @rnd)))(println "ref")(dotimes[i 3](let [rnd (ref seed)](dosync(time(loop[i 0](when(< i 10000000)(ref-set rnd (mod (+(* 7 @rnd) 13) 9564))(recur(inc i)))))(println @rnd))))(println "recur")(dotimes[i 3](let [rnd "recur"](time(let [rnd (loop[i 0,rnd seed](if(< i 10000000)(recur(inc i) (mod (+(* 7 rnd) 13) 9564))rnd))](println rnd)))));インクリメント;def;"Elapsed time: 3512 msecs";20000000;"Elapsed time: 3525 msecs";20000000;"Elapsed time: 3498 msecs";20000000;with-local-vars;"Elapsed time: 3581 msecs";20000000;"Elapsed time: 3501 msecs";20000000;"Elapsed time: 3579 msecs";20000000;atom;"Elapsed time: 1608 msecs";20000000;"Elapsed time: 1632 msecs";20000000;"Elapsed time: 1609 msecs";20000000;volatile!;"Elapsed time: 1262 msecs";20000000;"Elapsed time: 1264 msecs";20000000;"Elapsed time: 1258 msecs";20000000;ref;"Elapsed time: 2442 msecs";20000000;"Elapsed time: 2441 msecs";20000000;"Elapsed time: 2427 msecs";20000000;recur;20000000;"Elapsed time: 139 msecs";20000000;"Elapsed time: 136 msecs";20000000;"Elapsed time: 140 msecs";線形合同法;def;"Elapsed time: 6431 msecs";9332;"Elapsed time: 6395 msecs";9332;"Elapsed time: 6392 msecs";9332;with-local-vars;"Elapsed time: 6519 msecs";9332;"Elapsed time: 6567 msecs";9332;"Elapsed time: 6421 msecs";9332;atom;"Elapsed time: 4394 msecs";9332;"Elapsed time: 4405 msecs";9332;"Elapsed time: 4384 msecs";9332;volatile!;"Elapsed time: 4014 msecs";9332;"Elapsed time: 4050 msecs";9332;"Elapsed time: 3993 msecs";9332;ref;"Elapsed time: 5260 msecs";9332;"Elapsed time: 5257 msecs";9332;"Elapsed time: 5318 msecs";9332;recur;9332;"Elapsed time: 3492 msecs";9332;"Elapsed time: 3478 msecs";9332;"Elapsed time: 3470 msecs"