| ▲ | outworlder 8 hours ago | |||||||||||||||||||||||||||||||||||||||||||||||||
> The issue is solely that OG Mercurial was written in Python. Are we back to "programming language X is slow" assertions? I thought those had died long ago. Better algorithms win over 'better' programming languages every single time. Git is really simple and efficient. You could reimplement it in Python and I doubt it would see any significant slowness. Heck, git was originally implemented as a handful of low level binaries stitched together with shell scripts. | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | jmalicki 3 hours ago | parent | next [-] | |||||||||||||||||||||||||||||||||||||||||||||||||
Every time I've rewritten something from Python into Java, Scala, or Rust it has gotten around ~30x faster. Plus, now I can multithread too for even more speedups. Python is absurdly slow - every method call is a string dict lookup (slots are way underused), everything is all dicts all the time, the bytecode doesn't specialize at all to observed types, it is a uniquely horrible slow language. I love it, but python is almost uniquely a slow language. Algorithms matter, but if you have good algorithms, or you're already linear time and just have a ton of data, rewriting something from a single-threaded Python program to a multithreaded rust program I've seen 500x speedups, where the algorithms were not improved at all. It's the difference between a program running overnight vs. in 30 seconds. And if there are problems, the iteration speed from that is huge. | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | surajrmal 12 minutes ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||||||||
You must belong to the club of folks who use hashmaps to store 100 objects. It's amazing how much we've brainwashed folks to focus on algorithms and lose sight of how to actually properly optimize code. Being aware of how your code interacts with cache is incredibly important. There are many cases of using slower algorithms to do work faster purely because it's more hardware friendly. The reason that some more modern tools, like jj, really blow git out of the water in terms of performance is because they make good choices, such as doing a lot of transformations entirely in memory rather than via the filesystem. It's also because it's written in a language that can execute efficiently. Luckily, it's clear that modern tools like jj are heavily inspired by mercurial so we're not doomed to the ux and performance git binds us with. | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | kuschku 6 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||||||||
I've rewritten a python tool in go, 1:1. And that turned something that was so slow that it was basically a toy, into something so fast that it became not just usable, but an essential asset. Later on I also changed some of the algorithms to faster ones, but their impact was much lower than the language change. | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | Diggsey 6 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||||||||
> git was originally implemented as a handful of low level binaries stitched together with shell scripts. A bunch of low level binaries stitched together with shell scripts is a lot faster than python, so not really sure what the point of this comparison is. Python is an extremely versatile language, but if what you're doing is computing hashes and diffs, and generally doing entirely CPU-bound work, then it's objectively the wrong tool, unless you can delegate that to a fast, native kernel, in which case you're not actually using Python anymore. | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | eru 2 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||||||||
> Better algorithms win over 'better' programming languages every single time. That's often true, but not "every single time". | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | 20k 4 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||||||||
Python is by far the slowest programming language, an order of magnitude slower than other languages One of the reason mercurial lost the dvcs battle is because of its performance - even the mercurial folks admitted that was at least in part because of python | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | ragall 3 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||||||||
> I thought those had died long ago. No, it's always been true. It's just that at some point people got bored and tired of pointing it out. | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | bmitc 6 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||||||||
You barely have to try to have Python be noticeably slow. It's the only language I have ever used where I was even aware that a programming language could be slow. | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | jstimpfle 6 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||||||||
[flagged] | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | forrestthewoods 8 hours ago | parent | prev [-] | |||||||||||||||||||||||||||||||||||||||||||||||||
They died because everyone knows that Python is infact very very slow. And that’s just totally fine for a vast number of glue operations. It’s amusing you call Git fast. It’s notoriously problematic for large repos such that virtually every BigTech company has made a custom rewrite at some point or another! | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||