4 ms·
About a decade ago I wrote a fast rope library in C, with support for arbitrary inserts & deletes at arbitrary locations in large strings. I benchmarked it, and
by josephg 3y ago
About a decade ago I wrote a fast rope library in C, with support for arbitrary inserts & deletes at arbitrary locations in large strings. I benchmarked it, and I was shocked to discover that my library was ~20x faster than the SGI C++ rope library that shipped with my compiler.
I assumed I must be doing something wrong. Eventually took a look and found the SGI rope library constructs a tree where each heap allocated leaf node only contains a single character from the document. No wonder its so inefficient. I'm somewhat horrified by the idea that anyone is using that implementation in their software.
Sometimes I think about how much money people would pay to make their computer run 20x faster. Our society spends a truckload of money on computing hardware - but most of that hardware is wasted running wildly inefficient programs. Modern computers should do basically everything instantly. Its weird to me that we'll pay thousands of dollars for faster CPUs then write new software in python, electron or a docker container running in a VM.
- reaperman 3y ago> Sometimes I think about how much money people would pay to make their computer run 20x faster. I think people who can reliably do this are paid $250-750k/year at top paying companies.
- anonymoushn 3y agoI think there are almost 0 positions in industry for this sort of thing.
- saagarjha 3y agoThere are plenty, actually. Source: did this professionally for a bit
- noelwelsh 3y agoI'm interested to hear more. What kind of companies pay for this? Hardware companies like Intel and Nvidia? What are the roles called?
- jiggawatts 3y agoThe FAANGS certainly have people doing this kind of work. For example, Andrei Alexandrescu has a bunch of keynote talks at CPPCon where he talks about 1-4% speed optimisations he makes to the std library at Facebook. https://youtu.be/FJJTYQYB1JQ https://youtu.be/FJJTYQYB1JQ I also like the talk by Nicholas Ormrod “The strange details of std::string at Facebook": https://youtu.be/kPR8h4-qZdk https://youtu.be/kPR8h4-qZdk
- maayank 3y agoAlgotrading companies.
- saagarjha 3y agoThere are several branches, but all of them typically run at a scale where performance costs them money. People with large server deployments (any "hyperscale" company) hire these people to save millions of dollars a year. People who do client performance attract and retain users. Those who do trading bank on being the fastest. And many other areas; these are just the big ones.
- hnthrowaway0328 3y agoInteresting. Does it need a PHD or a specific Master? Because I feel no one needs that kind of performance at home so the only place to train is academy or industry while industry usually does not train a junior on that topic.
- saagarjha 3y agoNo. Usually you learn this stuff by doing it at a smaller scale elsewhere.
- anonymoushn 3y agoI just became an AVX2 programmer for fun. You can too, if you go to the highload.fun group chat then I or someone else will suggest blazing fast ideas for every problem that happen to be about half as fast as our own approaches.
- anonymoushn 3y agoI'm certainly intrigued and I'll shoot you an email.
- falsandtru 3y ago> Sometimes I think about how much money people would pay to make their computer run 20x faster. Bottlenecks that can make a computer 20x faster are very rare. First, pay $1m for a specialist to find the bottlenecks. However, it is even rarer that it is a bottleneck of the entire service. Rather, it is more likely to be an accidental drop in performance. Thus, basically performance monitoring is the best use of money. > Its weird to me that we'll pay thousands of dollars for faster CPUs then write new software in python, electron or a docker container running in a VM. There are more labor costs and lost commercial opportunities due to delays in development.
- Kamq 3y agoIt should also be noted that you can also get a significant speed up by writing situation specific code, instead of handling the general case, if your problem allows it. This kind of guarantees that custom code, written competently, will always be able to outpace standard library code. The standard library is one of the few things that probably always needs to handle the general case.
- bobajeff 3y ago>Its weird to me that we'll pay thousands of dollars for faster CPUs then write new software in python, electron or a docker container running in a VM. Python has a REPL, Duck typing and hooks for many libraries including gui libraries. Electron is basically a browser you can program via JavaScript with everything you'll ever need to make a gui application. They both make a lot of sense when you consider the alternatives. However, I do wonder why there isn't yet an option to AOT compile python and electron projects into fast executables.
- adgjlsfhk1 3y agothe semantics make aot compiling based speedup basically impossible. Python is just way too dynamic to do anything with. If you need speed and nice language features, you're much better off using a high level language that has better semantics for speed. Julia is my preferred option, but Lua and a few others fit this niche well.
- throwaway2037 3y ago> then write new software in ... electron Yeah, I agree. The OP's point is a bit misguided. The reason why people use Electron is it is cheaper to develop an app in Electron. By "cheaper", I mean the cost of developers plus the hardware needed to run it well. How much does an enterprise desktop PC with a 3+GHz CPU cost? Surely less than 2K USD. How much does a developer cost? It is hard to pay less than 75K USD per year. And about Python: Almost no one is doing CPU intensive work in pure Python. They are using C-language extensions like Pandas, NumPy, etc.
- josephg 3y ago> How much does an enterprise desktop PC with a 3+GHz CPU cost? Surely less than 2K USD. How much does a developer cost? But the software runs on the computers of all of their users. How much money do their users' computers cost? If you have just 10k users, probably $10M or so? But software companies don't pay for my computer's resources. The money I need to spend on computer hardware isn't priced in to your calculus at all. They don't care. I find it pretty frustrating and sad.