- 14comments
- 21comments
- 138comments
- 3comments
- 46comments
- 3comments
- 169comments
- 230comments
- 60comments
- —discuss
- 3comments
- 27comments
- 165comments
- 177comments
- 26comments
- 100comments
- 302comments
- 185comments
- 7comments
- 88comments
- —discuss
- 41comments
- —discuss
- 91comments
- 155comments
- 199comments
- 339comments
- 19comments
- 48comments
- 470comments
Very nice. Let's see Paul Allen's quicksort
(2022)
If you're curious why you would want a vectorized way to sort lists of numbers, one use case is building histograms - it's much easier to build a histogram if you've sorted all your samples first
I wonder what apps have implemented this now that a few years have passed.
Actual title: “Vectorized and performance-portable Quicksort” (2022).
Actual sense in which it’s first:
Would they do the same thing today or have an LLM re-implement those 3000 lines of c++ ?
Id say that it is a lot more likely for the in-house, at least half a decade old library to be correct and performant than 3000 lines of an LLMs mediocre regurgitation of that code.
Guys, remember when language features allowed re-usability?
Barely, and rarely for C++ specifically.
I think software engineering in general is in a bit of a discoverability crisis. So many problems actually have solutions implemented... Somewhere. If you know about them. And are speaking the same vocabulary as the original implementer to realize the solution might be applicable to your problem. It's one of the reasons that jokes exist about microservice frameworks (https://www.youtube.com/watch?v=y8OnoxKotPQ) and how "We use Hadoop to store the output from our Kafka pipe, that's populated from our Traefik layer, all monitored with Grafana in front of Loki and Prometheus, of course" is a real sentence that has actual meaning and not a fever-dream.
LLMs are actually pretty impressive at being able to pull together disparate information from various domains into one place.
Well, it came out a while ago, so maybe we can be a bit silly:
There’s something sort of beautiful about mergesort and heapsort. Their names tell you what their main idea is, and how they work is immediately obvious.
Quicksort, on the other hand, has nothing beautiful about it and is named after it’s one redeeming feature (that it is quick for a lot of cases).
The beauties of quicksort are that it sorts in-place and that it is embarrassingly simple.
The in-place property can be utilized to make it very close to cache-oblivious algorithm.
How is it less beautiful?
Honest question, curious to hear about what that means to you.
Maybe if Hoare had called it Partitionsort in 1960, the name wouldn’t have been memorable enough to catch on and become so popular.
Definitely needs (2022) in the title, I was a bit confused!
Strange to see it here, the article is quite old.
Since pdqsort, vqsort, and glide sort, the current state-of-the-art are driftsort and ipnsort.
I've integrated them into ClickHouse: https://github.com/ClickHouse/ClickHouse/pull/106650
only sorts numbers? wouldn't radix be much better?
Just imagine when candidates will get asked by pre-revenue startups to implement a vectorized version of quick-sort in person in 10 mins, just for a SWE job which they do not use this themselves.
Only the likes of MAG 7, and a couple of hedge-funds would ask to do it since this problem directly applies to them.
But certainly not pre-revenue startups.
this was made like 4 years back most of the current algorithms use this already !
I didn't like the 9 MB image file in the blog. It took me few seconds to fully render the image.