For the best experience on desktop, install the Chrome extension to track your reading on news.ycombinator.com
Hacker Newsnew | past | comments | ask | show | jobs | submit | history | dwdz's commentsregister

It seems like Qt went from red-black tree to skip list in Qt4 and back to red-black tree in Qt5.

yeah it turns out that complex code, when its properly encapsulated and implemented in a bug-free manner, is not such a cost after all.

A correct skiplist is easier to NIH than a correct red-black tree (which for me was the final boss of the DS class in college), but has performance edge cases a red-black tree doesnt, if you treat it like a search tree.


I think it was more about binary size. There are a few sentences in the Qt containers documentation about them being "optimized to minimize code expansion".

I mean that could mean a lot of things. By default, in C++, an std::vector<float> and std::vector<int> are two entirey separate classes with distinct methods getting compiled, even though in this particular the methods would be identical. Moreover, since templates are in headers, every object file gets their own compiled copy.

I'm sure there's some cleverness in there to mitigate the problem somewhat, but the problem still fundamentally exists

You can mitigate this manually to some degree, by making the generic classes call out to non-generic functions, of which there's guaranteed to be just 1 copy. I'm guessing that's what Qt does (among other things) when mentioning this


Sorry if this is a dumb question but wouldn't vector<float> and vector<int> generate different code on get/set? Since floats go in different registers/need different instructions to load/store them to memory? Or is it something like, actually all of the std::vector functions technically operate on T&, and manipulating the pointers can use the same code, and really it's the optimizer that has to think about float vs int registers or something

Well, you can do two or three main things:

- Use an algorithm and implementation that needs a small amount of code for each instance (that is where the skip list is useful)

- Have a shared "out of line" (not inline) implementation for bulky parts of the implementation, where possible

- Support the compiler + linker feature to merge identical functions by making code identical between template instantiations of similar enough types


Should be:

    ul.threadlist li.origin a {
      display: block;
      background: rgb(205, 216, 216);
      font-weight: normal;
      padding: 1px 6px;
      margin: 1px -6px;
    }


Good point.


The script works just fine on real Linux, it creates 2048 files and ls command lists them all with different names.

    ls -l win32/
    total 0
    -rw-r--r-- 1 dawid dawid 0 Feb 26 12:13 ''$'\355\277\237''.exe'
    -rw-r--r-- 1 dawid dawid 0 Feb 26 12:13 ''$'\355\267\213''.exe'
    -rw-r--r-- 1 dawid dawid 0 Feb 26 12:13 ''$'\355\240\220''.exe'
    -rw-r--r-- 1 dawid dawid 0 Feb 26 12:13 ''$'\355\274\273''.exe'
    -rw-r--r-- 1 dawid dawid 0 Feb 26 12:13 ''$'\355\251\205''.exe'
    -rw-r--r-- 1 dawid dawid 0 Feb 26 12:13 ''$'\355\255\223''.exe'
    -rw-r--r-- 1 dawid dawid 0 Feb 26 12:13 ''$'\355\272\257''.exe'
    -rw-r--r-- 1 dawid dawid 0 Feb 26 12:13 ''$'\355\264\207''.exe'
    -rw-r--r-- 1 dawid dawid 0 Feb 26 12:13 ''$'\355\261\246''.exe'
    -rw-r--r-- 1 dawid dawid 0 Feb 26 12:13 ''$'\355\254\266''.exe'
    ...


Oh, great. Can you also share the locale? I'll write another Postscriptum section then.


    LANG=en_IE.UTF-8
    LANGUAGE=en_IE:en
    LC_CTYPE="en_IE.UTF-8"
    LC_NUMERIC="en_IE.UTF-8"
    LC_TIME="en_IE.UTF-8"
    LC_COLLATE="en_IE.UTF-8"
    LC_MONETARY="en_IE.UTF-8"
    LC_MESSAGES="en_IE.UTF-8"
    LC_PAPER="en_IE.UTF-8"
    LC_NAME="en_IE.UTF-8"
    LC_ADDRESS="en_IE.UTF-8"
    LC_TELEPHONE="en_IE.UTF-8"
    LC_MEASUREMENT="en_IE.UTF-8"
    LC_IDENTIFICATION="en_IE.UTF-8"
    LC_ALL=


Not the OP, but have you tried LANG=C and getting rid of the rest?


All lowercase text is so hard to read.


i didn't find it hard to read, personally

perhaps the author is anti-capital-ist?

having an entire separate alphabet just to mark the start of sentences, and proper names, does seem extremely wasteful

on the microphone, it looks like quite a delicate process

i've modded some cheap aliexpress microphones (eg following https://audioimprov.com/AudioImprov/Mics/Entries/2015/12/20_...) but i'd want to see some measurements or reviews before embarking on something like this one


capitals could damage the ribbon


ifyouthinkthatsbadbearinmindthatbothcapitallettersinlowercasetextandspacesbetweenwordsarefairlyrecentinventions


And what about changing direction on each line ? https://en.wikipedia.org/wiki/Boustrophedon


nd y dnt rly nd bth vwls nd spcs s sm lngg grps ntlly drppd vwls whn thy gt spcs


𓁑 𓁒 𓁓 𓁔 𓁕 𓁖 𓁗

𓄒 𓄓 𓄔 𓄕 𓄖 𓄗 𓄘

𓀊 𓀋 𓀌 𓀍 𓀎 𓀏 𓀌

𓋥 𓋦 𓋧 𓋨 𓋩 𓋪 𓋫

𓉢 𓉣 𓉤 𓉥 𓉦 𓉧 𓉨


I also fell for the purple text that didn't turn out to be a link

This is quite the style


on my machine, the text is also gigantic, and some of it is outside the screen :')


50-60 years old, according to Rick Beato

https://www.youtube.com/watch?v=3rx08qWtFak


Please don't use Jet color scheme. Matplotlib uses excellent viridis by default. There's no reason not to use it. [0][1]

[0] https://stats.stackexchange.com/questions/223315/why-use-col...

[1] https://www.youtube.com/watch?v=xAoljeRJ3lU


It uses nipy_spectral.


Are we still getting excited about new smartphones? What year is it? 2012?


I did catch myself stop watching YT series like "here's another bigger monitor" or whatever. Idk we all have our thing I guess. I was getting sucked into camera gear for a bit.


I'm using this[1] and I love it. Adding 1 column of spacing between two hands is real game changer. I've tried Colemak and Workman before but I found qwerty-wide to be more comfortable than both of them. It's also much easier to learn, especially if you're Vim user.

[1] https://www.keyboard-design.com/letterlayout.html?layout=qwe...


That’s an interesting solution! As someone who likes a wider keyboard stance this makes a lot of sense to me, and I think it’d work well with an ISO layout too.


The webpage doesn't load with JS disabled, and when you enable it, it just displays a bunch of text and some hyperlinks. This is beyond ridiculous.


1. No borrow checker

2. Compilation times


Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search:

HN For You