clojure-dev

Issues: https://clojure.atlassian.net/browse/CLJ | Guide: https://insideclojure.org/2015/05/01/contributing-clojure/
2019-10-02T20:25:59.061600Z

Performance benchmarks published for the latest core.rrb-vector library, with comparisons to the same set of JVM vector/list libraries as published in the bifurcan set a couple of years ago (and run using the same benchmarking code used by bifurcan): https://github.com/clojure/core.rrb-vector/blob/master/doc/benchmarks/benchmarks.md . Definitely room for improvement in core.rrb-vector pretty evident there. I've been focusing on making it correct before making it fast.

seancorfield 2019-10-02T22:11:48.062700Z

@andy.fingerhut Do you have a sense of how many people are using core.rrb-vector in production code? Are there specific use cases where it makes a dramatic difference?

seancorfield 2019-10-02T22:12:15.063300Z

(if I should just study the readme and it's references, LMK)

2019-10-02T22:24:25.065600Z

The README could be better in terms of suggesting use cases than it is now. The original research papers which describe the data structure suggest one: map-reduce kinds of things on a big memory multi-core machine where one step divides up the vector into chunks, operates on each chunk in parallel, and the results of each of those could vary significantly from the input chunk sizes. Now you want to do a second map-reduce step, but divide up the intermediate results into equal size pieces very quickly, even though the first step output chunks vary significantly in size.

2019-10-02T22:24:52.066200Z

In general, though, whatever a vector is good for, but with faster-than-linear time concatenation and subvec operations.

2019-10-02T22:25:43.066900Z

My current fascination with them is based more upon understanding the data structure than having an application ready at hand that I want it for.

2019-10-02T22:26:47.067900Z

I know that the fipp pretty printer uses core.rrb-vector, and one of the recently fixed bugs came from a fipp user. I doubt the library had heavy production use, given the number of bugs that caused it to throw exceptions or return incorrect results.

alexmiller 2019-10-02T22:45:57.068500Z

I seem to pretty regularly run into people using it transitively through various things, more often than I would expect

alexmiller 2019-10-02T22:46:16.068900Z

I have not tried to catalog those cases so can't really say any specifics

2019-10-02T22:49:31.069600Z

I would guess that fipp, through some pretty-printing plugins for Leiningen and/or other REPLs, might be a noticeable fraction of those.

seancorfield 2019-10-02T22:49:41.069800Z

Interesting. Thank you!

2019-10-02T22:50:38.071Z

I know that cljs-test-runner depends transitively on core.rrb-vector, I think through fipp, because I can't use cljs-test-runner for the core.rrb-vector itself unless cljs-test-runner is changed to use shading of the libraries it needs.