Fork me on GitHub
#helix
<
2020-05-19
>
Aleed00:05:09

github redirects might account for that, though not sure if that applies for git deps

Aleed00:05:44

an example @dominicm showed me was using helix git url

lilactown00:05:08

I think it will redirect as long as someone doesn’t take my old name

Aron00:05:40

probably easier to make a new account ; )

dominicm06:05:38

I think they stopped people from taking the new names.

dominicm06:05:49

There was that controversy a while ago

Eliraz06:05:07

@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.

👍 8
Eliraz07:05:01

@lilactown Do you know how helix performs vs reagent ?

Eliraz08:05:51

that's rather surprising, I expected ClojureScript's output to be faster / same at least as React is

Aron08:05:12

well, it's not quite conclusive

Aron08:05:24

it's one benchmark with one implementation

Eliraz08:05:00

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

Eliraz08:05:11

however it seems like inferno is the winner by a large margin (of those React like libraries, including React itself)

Aron09:05:20

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?

Eliraz09:05:58

you can choose what to show in that table on the button WHICH FRAMEWORKS

Aron09:05:11

that's not the issue

Aron09:05:28

you took 'too big' too literally : )

Eliraz09:05:49

that benchmark suggests that clojurescript is even slower than angular 1.7 .. that's a bit crazy

Aron09:05:22

that's a strong word to use for an open source collaboration project, don't you think?

Eliraz09:05:54

what? crazy?

Eliraz09:05:18

BTW what's keyed and not keyed?

orestis11:05:23

ClojureScript can never beat raw React in terms of performance.

orestis11:05:28

It’s just doing more.

dominicm11:05:45

Not true. The early om demonstrations were based around that.

orestis11:05:22

6 years ago :)

orestis11:05:15

In any case I would do my own benchmarks, and measure the feel of the app, not just some numbers.

👍 8
Eliraz14:05:49

it depends on the implementation I guess

lilactown14:05:54

IME CLJS is a bit slower compared to plain ReactJS

lilactown14:05:19

However that helix benchmark hasn’t been tuned at all

lilactown14:05:28

It’s on my list to go review it

lilactown15:05:50

helix (in theory) should be just as fast as React

lilactown15:05:26

unfortunately, it’s rare for people to get paid to create good good benchmarks 😞 they’re quite labor intensive

Aron15:05:08

it's extremely hard to benchmark anything reliably in any jit compiler without full scale application

Aron15:05:49

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

Aron15:05:39

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

Aron15:05:03

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

Eliraz15:05:40

I think browsers should support clojure nativity. 🙂

lilactown21:05:32

put some work in today to update the helix benchmark: https://github.com/krausest/js-framework-benchmark/pull/734

lilactown21:05:02

let me know if y’all think I’m doing anything that’s cheating ;)

dominicm22:05:03

How did the numbers look after?

dominicm22:05:29

Not sure I would consider mutable state in build-data too idiomatic. Maybe go with a transient instead?

lilactown22:05:05

I personally find transients less idiomatic than using JS arrays for perf-critical code but that’s probably just my experience

dominicm22:05:15

Those are good numbers. 👍

dominicm22:05:51

Your code is written in a way that would perfectly suit transients fwiw. It would drop in.

lilactown22:05:27

i’ll try it out

lilactown22:05:50

I can’t imagine it will be faster than pushing an array

lilactown22:05:23

I think there’s still room to optimize the partial update

lilactown22:05:23

a lot of the optimizations are nothing to do with helix. it’s more about working around the cost of using immutable data

lilactown22:05:55

I wonder how much room for optimization there is in CLJS’ data structures