github redirects might account for that, though not sure if that applies for git deps
an example @dominicm showed me was using helix git url
I think it will redirect as long as someone doesn’t take my old name
probably easier to make a new account ; )
Haha I always search for lilactown hx and then I remember :)
I think they stopped people from taking the new names.
There was that controversy a while ago
@smt Thats a good question, I really adore functional programming and was looking for a more "suitable" world to work in, I mean, JavaScript is good, but it's not OOP nor FOP, it's somewhere in between, and that makes it inconsistent and having some weird quirks when attempting to extract the Functional side of it. I always was fascinated by LISP and wished to work with any LISP dialect full time, now, I can, thanks to ClojureScript. I'm just deeply in love with Functional Programming, I find it way stronger than OOP, much more sophisticated and requires more programming skills Per se.
@lilactown Do you know how helix
performs vs reagent
?
@eliraz.kedmi157 there are benchmarks but no follow up yet https://krausest.github.io/js-framework-benchmark/current.html
that's rather surprising, I expected ClojureScript's output to be faster / same at least as React is
well, it's not quite conclusive
meaning?
it's one benchmark with one implementation
true. it also depends on the implementation itself. I saw how core.async can be a beast of performance, while changing the call times can result awful results
however it seems like inferno
is the winner by a large margin (of those React like libraries, including React itself)
personally, I don't find any useful information in that table, it's way too big, what are we actually comparing and for what purpose?
you can choose what to show in that table on the button WHICH FRAMEWORKS
that's not the issue
you took 'too big' too literally : )
that benchmark suggests that clojurescript
is even slower than angular 1.7
.. that's a bit crazy
that's a strong word to use for an open source collaboration project, don't you think?
what? crazy?
BTW what's keyed and not keyed?
ClojureScript can never beat raw React in terms of performance.
It’s just doing more.
Not true. The early om demonstrations were based around that.
https://nitter.net/swannodette/status/430350898888724480?lang=en referenced here
6 years ago :)
In any case I would do my own benchmarks, and measure the feel of the app, not just some numbers.
it depends on the implementation I guess
IME CLJS is a bit slower compared to plain ReactJS
However that helix benchmark hasn’t been tuned at all
It’s on my list to go review it
helix (in theory) should be just as fast as React
unfortunately, it’s rare for people to get paid to create good good benchmarks 😞 they’re quite labor intensive
it's extremely hard to benchmark anything reliably in any jit compiler without full scale application
and that usually means hardcore instrumentation of full browser environments, in the case of javascript, or at least some kind of v8 or d8 run
I used to do it for something much more simple, and it was very easy to get some result and it turns out that it's just an artifact of the setup
and this is before even actually talking about writing separate implementations for the things you are comparing to each other in a way that it's both idiomatic and not obviously wrong, but it does use available tools for performant code where a knowledgeable developer would do so - which means in depth knowledge of all the things you are measuring. which was still not too much, but then I got fed up with benchmark.js and its api
I think browsers should support clojure nativity. 🙂
put some work in today to update the helix benchmark: https://github.com/krausest/js-framework-benchmark/pull/734
let me know if y’all think I’m doing anything that’s cheating ;)
How did the numbers look after?
Not sure I would consider mutable state in build-data too idiomatic. Maybe go with a transient instead?
I personally find transients less idiomatic than using JS arrays for perf-critical code but that’s probably just my experience
Those are good numbers. 👍
Your code is written in a way that would perfectly suit transients fwiw. It would drop in.
i’ll try it out
I can’t imagine it will be faster than pushing an array
I think there’s still room to optimize the partial update
a lot of the optimizations are nothing to do with helix. it’s more about working around the cost of using immutable data
I wonder how much room for optimization there is in CLJS’ data structures