Computer Science

Mergesort Investigation 4 - reuse linked lists

Mergesort Investigation 4 - reuse linked lists

Bruce Ediger

After I wrote a recursive merge sort, I reviewed it to ensure it wasn’t doing extra work. From that perspective, I noticed that for each of the 10 list sorts my benchmark program made for a given length linked list, it created a new linked list.

I thought that I could make the overall benchmark run faster by not creating a new, very large, linked list for every run, but rather re-using the existing list. I hoped to have the benchmark program use less time between the ten measured sort algorithm executions, not make the sorting faster. I surprised myself by getting the opposite effect.

Mergesort Investigation 3 - recursive implementation

Mergesort Investigation 3 - recursive implementation

Bruce Ediger

I wrote a traditional, top-down, recursive merge sort. The idea was to see if a different implementation exhibited the same dramatic, abrupt slowdowns. If the different implementation showed the same jumps in timings, the problem is with the operating system, the language run time, or the memory hardware. I know I said I’d ruled out the OS previously, but I was still suspicious.

Wordle 1091, June 14, 2024

Wordle 1091, June 14, 2024

Bruce Ediger

I falsely believed that I had found a wordle state where an elaborate regular expression with alternations gives fewer possible answers than a simple regexp in a pipeline with extra greps.

I was wrong.

wc -l

wc -l

Bruce Ediger

Unix, and now Linux, have included a wc command for a very long time. Most explanations of its use are misleading fluff and garbage, and do not give you an appreciation of its true value.