This does underline the weaknesses of Clojure and performance. For a typical language, the advice is (1) don't call expensive functions and (2) loop less.
For Clojure, we get the wonderful quote "There is a close transducer, partition-all, which has no step arity.".
One of Clojure's biggest weaknesses in practice is that breaking in to those functional structures to figure out where the time is being spent or to debug them is harder than in other languages. This is a natural trade-off of developing a terse and powerful language.
It is notable how much trouble Clojure has had over the years linking a bug back to a line number and a reason. Even with spec.
>> One of Clojure's biggest weaknesses in practice is that breaking in to those functional structures to figure out where the time is being spent or to debug them is harder than in other languages. This is a natural trade-off of developing a terse and powerful language.
Comments
This does underline the weaknesses of Clojure and performance. For a typical language, the advice is (1) don't call expensive functions and (2) loop less.
For Clojure, we get the wonderful quote "There is a close transducer, partition-all, which has no step arity.".
One of Clojure's biggest weaknesses in practice is that breaking in to those functional structures to figure out where the time is being spent or to debug them is harder than in other languages. This is a natural trade-off of developing a terse and powerful language.
It is notable how much trouble Clojure has had over the years linking a bug back to a line number and a reason. Even with spec.
Not that hard if you use something like YourKit. There's also a quite good Clojure library https://github.com/hugoduncan/criterium .