[HN Gopher] Do you know how much your computer can do in a secon... ___________________________________________________________________ Do you know how much your computer can do in a second? (2015) Author : surprisetalk Score : 87 points Date : 2023-06-22 18:27 UTC (4 hours ago) (HTM) web link (computers-are-fast.github.io) (TXT) w3m dump (computers-are-fast.github.io) | sublinear wrote: | Why are so many of these written in python? That seems against | the spirit of this quiz. Should change the name of the site to | "how fast is python really?" | yen223 wrote: | I presume it's because Python has a reputation for being a slow | language, and this quiz wanted to show that even "slow" Python | code can be fast on modern hardware, unless you touch IO. | | That, and Python is probably the most accessible language for | the most number of people. | 7speter wrote: | I imagine it might be because python is a much easier to read | language. If someone with a non programming background comes | across this because the question (and answer) is interesting to | them, they can have an idea of whats going on. | weatherlight wrote: | I don't find python easier or harder to, compared to..ruby, | javascript, ( or even OCaml) for example. | | Most people who are tech adjacent, learn declarative langs | like SQL, HTML first. Python doesn't look like that at all. | | It's like when people say "Go is so easy to read!" I learned | to program in SML then OCaml, __insert other FP langs__ then | Ruby and ES6, Go looked pretty alien to me the first time I | saw it. | jangxx wrote: | That's cool and all, but then you're not "most people". | Personally I found Go super easy to read the first time I | saw it, but my journey through the programming languages | was also a different one. | herpderperator wrote: | I think there's a bug after completing the first question. After | I selected an answer for how many iterations of an empty loop | Python could do, it said the answer was incorrect and showed that | 68 million was the correct answer, but proceeded to explain that | Python can do 68k iterations in an empty loop. This means the | answer shown and the explanation are contradictory and likely one | of them is wrong, probably the explanation. | | Edit: Apparently I forgot to account for the milliseconds part. | My bad. | ladberg wrote: | The 68k is per _millisecond_ , which lines up with 68M per | second. | nathanwh wrote: | "68,000 iterations of an empty loop in a millisecond" The | factor of 1000 comes from the conversion from seconds in the | question, to milliseconds in the blurb. | globular-toast wrote: | Most of this is not really "computers are fast" but rather | "algorithms are cool". That's fine, of course. | roninkoi wrote: | What surprised me the most is how fast grepping is. It can search | more bytes from memory than iterations in a simple for loop? | burntsushi wrote: | It provided the easiest possible case to grep: a simple | literal. So all grep needs to do is substring search. And in | turn it's accelerated by use of memchr. And that in turn it's | written in assembly using AVX2 vector instructions, courtesy of | GNU libc. | taldo wrote: | Probably a pretty bad test of the _actual_ speed of grep. A | more realistic test would have printable characters and | frequent newlines. I wouldn't be surprised if all those bytes | were just taking a fast-path shortcut somewhere. | dan-robertson wrote: | Grep _is_ fast. Like obviously in this case you're 'just' | measuring how fast you can read from a pipe, but there are | plenty of ways grep could have been implemented that would | have been slower. Generally, I think grep will convert | queries into a form that can be searched for reasonably | efficiently (eg KMP for longer strings (bit of a guess - not | sure how good it is on modern hardware), obviously no | backtracking for regular expressions. | burntsushi wrote: | I don't think KMP has been used in any practical substring | implementation in ages. At least I'm not aware of one. I | believe GNU grep uses Boyer-Moore, but that's not really | the key here. The key is using memchr in BM's skip loop. | SnowflakeOnIce wrote: | Depending on many factors (like details of the patterns used | and the input), some regex engines (like Hyperscan) can match | tens of gigabytes per second per core. Shockingly fast! | Night_Thastus wrote: | Especially ripgrep! All hail ripgrep! | | I will never go back to not using it. | mud_dauber wrote: | I toured my eventual college's CS dept as a HS senior (this was a | LONG time ago. Punch cards, people.) | | One machine counted clock cycles between two key presses using | the same finger. From what I recall the smallest answers were in | the ... thousands? | jamestimmins wrote: | This is awesome. It was fun to see where my intuition was way | off. Had no idea indexing/not-indexing a column would make a | 25,000x difference (makes sense though as logN on a 10-million | row table is 13, which is a lot less than a linear scan). | | Was also very surprised to see how slow Bcrypt is. | | _edit:_ Yes, BCrypt, is designed to be slow. I just had no idea | how slow. I assumed it was 100-1000 times faster than it is /can | be. | TonyTrapp wrote: | > Was also very surprised to see how slow Bcrypt is. | | Though unlike all the other examples here, this one is actually | intentional. If/when computers become considerably faster, the | cost factor of typical bcrypt implementations will be raised so | that it _stays_ slow, to keep it difficult to throw brute-force | attacks at it. | jamestimmins wrote: | For sure, that's an important piece. But when I hear "slow | hashing" I assumed it meant 1k-10k times per second, not <10 | times per second. That's practically human speed. | stavros wrote: | The bcrypt example is the only one that's off the mark. "How | fast is this function that we've explicitly designed to be | arbitrarily slow?" Well, it depends, how slowly did you | configure it to run? | | Basically the important argument to bcrypt is literally the | amount of time you want it to take to run on your hardware (ie | the number of rounds). | ilyt wrote: | Load half a webpage sadly... | | The only thing I learned is apparently default Python JSON lib | sucks on speed | deepspace wrote: | Or displaying 1/2 a character in the Visual Studio editor. | dan-robertson wrote: | 50MB/s was my guess for a json parser written in a direct way | in a moderately fast language that doesn't read into some | optimised representation (eg I assume the python one constructs | python data structures). The json file is 64k (which may have | been what threw you off) so that comes to ~750 per second. But | my guess of 50MB/a could be way off (might be imagining a | slower implementation but then the computer for the tests is | also a bit slow, I think) | tmtvl wrote: | The test computer may be a little slow-ish but it doesn't | seem "commodity laptop picked up from local supermarket" | slow. It has an SSD, for example. | JohnFen wrote: | I can grasp it about as well as I can grasp the size of the | universe. | mordae wrote: | Just a couple days ago we have programmed rp2040 to drive WS2812B | LED using assembler, counting clock cycles, with the kids in the | IT club I run. Not that much harder than playing Shenzhen I/O. | You should give it a try. :] | [deleted] | mordae wrote: | Modified the C example to avoid compiler being too clever and | taking zero time. | | I get over 3.3 billion additions per second. 550 million is way | too low. | nielsole wrote: | I clicked 1 in the first example because I thought that's the | number of iterations it would do with -O2. | BatFastard wrote: | As a game engine builder, you come to appreciate that your target | speed to draw millions of polygons, calculate physics on hundreds | of objects, render the UX, collect network traffic, send network | traffic, compute pathing, and implement game logic, and | everything else that needs to be done is 16 milliseconds max. | | So I would guess in C++ you could make 240 million calculations | in a second. | thfuran wrote: | A large modern consumer GPU is several to a few dozen | teraflops. | BatFastard wrote: | That is a really bad guess... | umeshunni wrote: | What's bad about it? | CyberDildonics wrote: | Did you say something ridiculous then reply to yourself three | minutes later? | BatFastard wrote: | Indeed, once I realized the error of my train of thought! | ChrisArchitect wrote: | Some previous discussion from 2020: | | https://news.ycombinator.com/item?id=23804373 | avgcorrection wrote: | One second is a really long time UX-wise. | ilyt wrote: | It seriously feels like most UI designers don't know that. | josephg wrote: | And most web developers don't know that. You want to add 1 | second of page load time to print the time in the correct | timezone? Noooo! Of course, it's never framed like that. | People just pull in moment or whatever because that's what | stack overflow recommends. Moment pulls in the global | timezone database. You don't notice your javascript bundle | grow and surprise! Your website sucks. | troupo wrote: | Unfortunately, for the longest time ever Moment was the | only sane date and time library for Javascript. | | If you needed more than just adding a single second, you | were stuck with it. | | But size-wise it was ginormous. | dang wrote: | Discussed at the time: | | _Do you know how much your computer can do in a second?_ - | https://news.ycombinator.com/item?id=10445927 - Oct 2015 (174 | comments) | jiggawatts wrote: | I like to test people's intuition of computer power by asking | them how many multiplications their phone or PC can make in the | time it takes light to cross the room. | | The way to estimate this is that light takes 3ns to go 1m. If the | room is 10m wide, that's 30ns. At typical frequencies that's 100 | clocks. With, say, 8 cores that's 800 steps. At each step a core | can retire about 8 multiplies using AVX vector instructions. The | estimate of 6,400 multiplications is actually very conservative | because you also have the GPU! Even low end models can put out | hundreds of thousands of multiplications in 30ns. High end models | can do about a million. | | When asked, most people estimate "1 to 10". Even programmers and | IT professionals do not have a mental model of how fast computers | really are. | jstanley wrote: | > Even programmers and IT professionals have literally not | mental model of how fast computers really are. | | Or of how slow light is! | elboru wrote: | This site[0] helped me improve my mental model. You can | scroll through the solar system at scale (the moon being one | pixel). It takes a while!! | | Then you notice a small button at the right bottom corner, | that button allows you to auto-scroll at the speed of light, | wow, now that's slow! | | [0]https://joshworth.com/dev/pixelspace/pixelspace_solarsyste | m.... | nomel wrote: | Makes you realize that space travel isn't going to happen | with current physics. | [deleted] | porphyra wrote: | The faster you go, the shorter you have to travel due to | length contraction. So travelling really far distances is | still possible, for example, by constant acceleration | [1]. It's just that everyone you left behind will have | been dead for billions of years by the time you arrive. | | [1] https://en.wikipedia.org/wiki/Space_travel_under_cons | tant_ac... | [deleted] | paulddraper wrote: | Exactly. | | Speed of light is not exactly a relatable point of reference. | arp242 wrote: | To be honest I think this is almost a trick question, because | you're combining two very different things (speed of light and | performance of computers), and people are not very good at | combining these sort of contexts intuitively (i.e. you need to | do the calculations). | | The other day I was watching The Twilight Zone, and one episode | involves a crew "655 million miles" from Earth. I know what | miles are, I know the rough layout and scale of the solar | system, galaxy, and universe, but I had no idea how far away | that actually is because it mixes these two units from very | different contexts and intuitively it just doesn't make sense | to me; is it still in the solar system? No idea. Converting it | to AU showed it's about 7 AU, which put it in the appropriate | context: a bit beyond Jupiter. | imoverclocked wrote: | The real question is, "how many Twilight Zone episodes away | from ubiquitous quantum computing are we?" (is joke) | | Units definitely matter but anything outside of our day to | day experience is difficult to communicate widely. I think | most people don't know more than Jupiter is actually really | far away and really really big compared to the Earth. 7 AU | means nothing to my brain just like 655 million miles. It's a | computed unit based on mean distance from the center of the | Earth to the center of the Sun; I also have no idea how far | we are from the Sun because my brain just experiences a hot | circle in the sky. The only reason these things seem to make | sense is because we have seen really vague maps of the Solar | System. Other falsely but widely-accepted measures include | using state sizes to describe other regions. People readily | accept it despite never having been to said state or | potentially any other state ... or even across their own | state. | | I think these are accepted because of a false confidence in | understanding (think Dunning-Kruger) based on the fact that | we have _some_ information. | | Personal anecdote: A friend flew from the East coast to | Arizona and asked if we could just drive to the other side of | the state to see the Grand Canyon in the evening. I had to | explain that it's 6 hours one-way despite being in the same | state. Had I instead said "Arizona is the size of 22 | Connecticuts," the idea of how long it would take to get | there would still not make any sense. | | PS: I said "vague map of the Solar System" because generally | nothing is always the correct scale. Either the planetary | distances are the correct scale from each other or the | planets are the correct scale from each other for pragmatic | reasons. Sometimes, none of those things are scaled properly. | Some animations attempt to show things correctly but that's | still difficult to comprehend because of the non-linear | velocities required to keep the attention of the viewer. | aardvark179 wrote: | What units do you think you know the scale of the solar | system in? The speed of light is approximately 300 million | meters per second, so call it 300 thousand kilometres per | second, or very roughly 200 thousand miles. | | Also, if I were asking that sort of question in an interview | I would fine with a candidate getting a conversion wrong as | long as they explain their thought process, and I'd help them | correct the error early. I'm this sort of question is t meant | to be a trick, it's about whether you can connect different | variables which may not appear connected at first glance. | rcoveson wrote: | Sounds like most people estimate surprisingly well. Fermi-wise, | the obscure term in your numerator is 10^10 and the obscure | term in your denominator is 10^8. The more obvious term (room | size) is 10^1. So the answer is 10^3, and people are guessing | 10^0 or 10^1. So some people are only off by a couple order of | magnitude, which is explained by a rather small estimation | error in either or both obscure terms. | moffkalast wrote: | Anyone else having a weird deja-vu moment while reading this? | cogman10 wrote: | * Terms and conditions apply | | What you are saying is technically true but with HUGE caveats. | At this point, the issue isn't one of clock cycles but rather | memory bandwidth and latency. Even assuming the best case, a | hit in L1 cache, you are looking at +1ns to move the data from | memory into the registers. But now talk about L2, L3, or worse | system memory? Oof. And then you mention GPUs, but that problem | is compounded 10x due to the bandwidth constraints of PCIe. | | I mean, sure, if your CPU is doing nothing other than | multiplying the same value by 2 over and over again, it can do | that wickedly fast. However, once you start talking about large | swaths, gigs even, of data to operate against and those numbers | start to take a precipitous drop. | | Heck, one of the benefits of AVX isn't the fact that you can do | 64 lanes of multiplication at once, but rather the fact that | you can tell the CPU to grab 64 lanes worth of memory to work | against at once. | | This is why when you start looking at what is talked about when | people talk about next gen math machines, it's not the FLOPs | but instead the memory fabric that gets all the attention. ___________________________________________________________________ (page generated 2023-06-22 23:00 UTC)