performancepaper
A reproducible, open examination of the paper "A performance comparison of Clojure and Java" by Gustav Krantz (by joinr)
ultrarand
a demo of random number generation in java, and clojure via performance optimization (by joinr)
performancepaper | ultrarand | |
---|---|---|
5 | 2 | |
59 | 4 | |
- | - | |
0.0 | 5.0 | |
about 3 years ago | over 3 years ago | |
Clojure | Clojure | |
Eclipse Public License 2.0 | Eclipse Public License 2.0 |
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
performancepaper
Posts with mentions or reviews of performancepaper.
We have used some of these posts to build our list of alternatives
and similar projects. The last one was on 2022-01-21.
- Notes on Optimizing Clojure Code: Overview
-
Why are imperative programs considered faster than their functional counterparts?
There is a review of the study at https://github.com/joinr/performancepaper. Basically by using optimization tricks (recur for recursive function call, unchecked math, using Java types, etc.) Tom meets/beats the performance of Java.
-
Making the LinkedIn experimentation engine 20x faster
I did a contrast with someone's graduate thesis that aimed to analyze clojure vs. java performance and made some weak claims. The rep is here, and it's really the org file. Sort of a worked example of optimizing code.
-
I rewrote a Clojure tool in Rust
I often see people knocking on Clojure saying its performance is bad when they are still not familiar with all the core library has to offer and what idiomatic performant Clojure can look like. Take a look here for some examples by joinr
ultrarand
Posts with mentions or reviews of ultrarand.
We have used some of these posts to build our list of alternatives
and similar projects. The last one was on 2021-03-23.
-
Making the LinkedIn experimentation engine 20x faster
There's a pretty interesting discussion on primitive arrays where the user is trying to match java performance exactly with an array-based thing that's simple enough to port, but is still a hair off due to clojure's default toward longs even for indexing (java wants int for array indices, so casts are necessary). Ended up getting identical performance using JiSE here, although the clojure variant with uncheckedIntCasts was fairly close (just not "equivalent to Java" per the common trope).
-
Advent of Code 2020 Day 23 Crab Cups in Clojure (optimizing runtime from 10,000 years to 30 minutes)
There's an intersting thread on zulip regarding getting identical performance with java arrays. Normally if you're using unchecked math and working with primitives, then you should get with a hair of java (not 2-3x slower). The remaining differences are due to uncheckedIntCast since Clojure forces longs for indices and java wants ints. The difference is I'm in the realm of nanos but is there. You can eliminate it with custom bytecode like with the JISE library which is fairly painless. Example .
What are some alternatives?
When comparing performancepaper and ultrarand you can also consider the following projects:
clj-fast - Unpredictably faster Clojure
criterium - Benchmarking library for clojure
icfpc2019
mlton - The MLton repository
clojure - The Clojure programming language
slingshot - Enhanced try and throw for Clojure leveraging Clojure's capabilities
aoc-2021perfcomp - a fork of https://gitlab.com/slotThe/aoc-2021.git for a reddit exploration
RFCs - Design discussions about the OCaml language
julia - The Julia Programming Language
performancepaper vs clj-fast
ultrarand vs clj-fast
performancepaper vs criterium
ultrarand vs icfpc2019
performancepaper vs mlton
ultrarand vs clojure
performancepaper vs slingshot
performancepaper vs clojure
performancepaper vs aoc-2021perfcomp
performancepaper vs RFCs
performancepaper vs julia
performancepaper vs icfpc2019