NullPointerException in criterium.core/report-result
kumarshantanu opened this issue · 1 comments
kumarshantanu commented
Steps to reproduce:
$ lein try criterium "0.4.3"
nREPL server started on port 56595 on host 127.0.0.1 - nrepl://127.0.0.1:56595
REPL-y 0.3.5, nREPL 0.2.6
Clojure 1.6.0
Java HotSpot(TM) 64-Bit Server VM 1.7.0_76-b13
Docs: (doc function-name-here)
(find-doc "part-of-name-here")
Source: (source function-name-here)
Javadoc: (javadoc java-object-or-class-here)
Exit: Control+D or (exit) or (quit)
Results: Stored in vars *1, *2, *3, an exception in *e
user=> (require '[criterium.core :as c])
nil
user=> (c/report-result (c/bench (str "foo" "bar" "baz")))
WARNING: JVM argument TieredStopAtLevel=1 is active, and may lead to unexpected results as JIT C2 compiler may not be active. See http://www.slideshare.net/CharlesNutter/javaone-2012-jvm-jit-for-dummies.
WARNING: Final GC required 2.741481629020981 % of runtime
Evaluation count : 404150280 in 60 samples of 6735838 calls.
NullPointerException clojure.lang.Numbers.ops (Numbers.java:961)
Execution time mean : 151.335605 ns
Execution time std-deviation : 8.225372 ns
Execution time lower quantile : 143.469293 ns ( 2.5%)
Execution time upper quantile : 170.216076 ns (97.5%)
Overhead used : 8.760021 ns
Found 4 outliers in 60 samples (6.6667 %)
low-severe 3 (5.0000 %)
low-mild 1 (1.6667 %)
Variance from outliers : 40.1362 % Variance is moderately inflated by outliers
When I created a project and tested the same Criterium bench, this is the stack trace I got:
Uncaught exception, not in assertion.
expected: nil
actual: java.lang.NullPointerException: null
at clojure.lang.Numbers.ops (Numbers.java:961)
clojure.lang.Numbers.multiply (Numbers.java:146)
criterium.core$report_result.doInvoke (core.clj:964)
clojure.lang.RestFn.invoke (RestFn.java:410)
stringer.core_test/fn (core_test.clj:11)
clojure.test$test_var$fn__7187.invoke (test.clj:704)
clojure.test$test_var.invoke (test.clj:704)
clojure.test$test_vars$fn__7209$fn__7214.invoke (test.clj:722)
clojure.test$default_fixture.invoke (test.clj:674)
clojure.test$test_vars$fn__7209.invoke (test.clj:722)
clojure.test$default_fixture.invoke (test.clj:674)
clojure.test$test_vars.invoke (test.clj:718)
clojure.test$test_all_vars.invoke (test.clj:728)
clojure.test$test_ns.invoke (test.clj:747)
clojure.core$map$fn__4245.invoke (core.clj:2559)
clojure.lang.LazySeq.sval (LazySeq.java:40)
clojure.lang.LazySeq.seq (LazySeq.java:49)
clojure.lang.Cons.next (Cons.java:39)
clojure.lang.RT.boundedLength (RT.java:1654)
clojure.lang.RestFn.applyTo (RestFn.java:130)
clojure.core$apply.invoke (core.clj:626)
clojure.test$run_tests.doInvoke (test.clj:762)
clojure.lang.RestFn.applyTo (RestFn.java:137)
clojure.core$apply.invoke (core.clj:624)
user$eval89$fn__144$fn__175.invoke (form-init8424183465847974689.clj:1)
user$eval89$fn__144$fn__145.invoke (form-init8424183465847974689.clj:1)
user$eval89$fn__144.invoke (form-init8424183465847974689.clj:1)
user$eval89.invoke (form-init8424183465847974689.clj:1)
clojure.lang.Compiler.eval (Compiler.java:6703)
clojure.lang.Compiler.eval (Compiler.java:6693)
clojure.lang.Compiler.load (Compiler.java:7130)
clojure.lang.Compiler.loadFile (Compiler.java:7086)
clojure.main$load_script.invoke (main.clj:274)
clojure.main$init_opt.invoke (main.clj:279)
clojure.main$initialize.invoke (main.clj:307)
clojure.main$null_opt.invoke (main.clj:342)
clojure.main$main.doInvoke (main.clj:420)
clojure.lang.RestFn.invoke (RestFn.java:421)
clojure.lang.Var.invoke (Var.java:383)
clojure.lang.AFn.applyToHelper (AFn.java:156)
clojure.lang.Var.applyTo (Var.java:700)
clojure.main.main (main.java:37)
kumarshantanu commented
Oops, noticed that report-result
is used with benchmark
in the bench
macro. Sorry for the false alarm.