Live data from Hacker News

The computers are fast, but you don't know it

shvbsle.in

281–290 of 819 posts

Re: The computers are fast, but you don't know it

#282

Earlier quoted context omitted.

If I understand dataflow's example correctly you don't need the Select at the end: var x = Enumerable.Range(1,50) .Where((num, index) => num % 4 == 1 && index % 3 == 0) .Skip(2) .ToArray(); That computes the same thing as their Python snippet: [25,37,49]. Of course, what this is actually computing is whether the number is congruent to 1 modulo 4 and 3 so it was a weird example, but here's how you'd really want to wri…

> LINQ, to generate only every 4th number in a range Maybe something like this? Enumerable.Range(0,49).Select(x => 4*x + 1)

Yeah, that would work, throw it before the Where clause and change 49. Range here doesn't specify a stopping point, but a count of generated values (this makes it not quite the same as Python's range). So you'd want:

  Enumerable.Range(0,13).Select(x => 4 * x + 1).Where((e, i) => i % 3 == 0).Skip(2)
And that's equivalent to the original, short of writing a MyRange that combines the first Range and Select. Still an awful lot of work for generating 3 numbers.

Re: The computers are fast, but you don't know it

#283
post #22

On a 3GHz CPU, one clock cycle is enough time for light to travel only 10cm. If you hold up a sign with, say, a multiplication, a CPU will produce the result before light reaches a person a few metres away.

That is quite an amazing way to put it. So the processor in my hand can compute a multiplication fast than light can cross the room?

It can complete many multiplications in that time, especially if you factor in parallelism. An 8-core machine using AVX-512 could do a few thousand 32-bit multiplications in that time. Your GPU can do tens of thousands, maybe hundreds of thousands depending on the model.

Re: The computers are fast, but you don't know it

#284
post #11

Yup. We have gotten into the habit of leaving a lot of potential performance on the floor in the interest of productivity/accessibility. What always amazes me is when I have to work with a person who only speaks Python or only speaks JS and is completely unaware of the actual performance potential of a system. I think a lot of people just accept the performance they get as normal even if they are doing things that ta…

It's interesting to me that two of the top three comments right now are talking about gaining performance benefits by switching from Python to C when the actual article in the link claims he gained a speedup by pulling things out of pandas, which is written in C, and using normal Python list operations. I would like to see all of the actual code he omitted, because I am skeptical how that would happen. It's been a wh…

> the actual article in the link claims he gained a speedup by pulling things out of pandas, which is written in C, and using normal Python list operations.

Well, he claims he did three things:

(1) avoid repeating a shared step every time the aggregate function was called,

(2) unspecified algorithmic optimizations.

(3) use Python lists instead of pandas dataframes.

(1) is a win that doesn't have anything to do with pandas vs python list ops, (2) is just skipped over any detail but appears to be the meat of the change. Visually, it looks like most of the things the pandas code tries to do just aren't done in the revised code (it's hard to tell because some is hidden behind a function whose purpose and implementation are not provided). It's not at all clear that the move out of pandas was necessary or particularly relevant.

Re: The computers are fast, but you don't know it

#285
post #151

Earlier quoted context omitted.

Please don't write programs in bare C. Use Go if you're looking for something very simple and fast-enough for most uses; it's even memory safe as long as you avoid shared-state concurrency.

Please don't write programs in go. Sure it looks awesome on the surface but it's a nightmare when you get a null pointer panic in a 3rd party library. Instead use Rust. See here for more info: https://getstream.io/blog/fixing-the-billion-dollar-mistake-...

You've obviously been burned by null pointers (probably not just once). And you think they are a problem, and you're right. And you think they are a mistake, and you could be right about that, too.

But they're not the only problem. Writing async network servers can be a problem, too. Go helps a lot with that problem. If for your situation it helps more with that than it hurts with nulls, then it can be a rational choice.

And, don't assume that go must be a bad choice for all programmers, in all situations. It's not.

Re: The computers are fast, but you don't know it

#286
post #243

Earlier quoted context omitted.

> That said, they're also challenging to use for the "average" (median) developer who'd end up creating code that is error-prone and would probably have memory leaks sooner or later. Many of the most highly credentialed, veteran C developers have said they can't write secure C code. Food for thought. > Go is a decent choice, because of a fairly shallow learning curve and not too much complexity, while having good lib…

> secure C code. There is unsecure code hidden in every project that uses any programming language ;) I get what you're saying here, you're specifically talking about security vulnerabilities from memory related errors. I honestly wonder how many of these security vulnerabilities are truly issues that never would have come up in a more "secure" language like Java, or if the vulnerabilities would have just surfaced in…

> There is unsecure code hidden in every project that uses any programming language ;)

Security isn't a binary :) Two insecure code bases can have different degrees of insecurity.

> I honestly wonder how many of these security vulnerabilities are truly issues that never would have come up in a more "secure" language like Java, or if the vulnerabilities would have just surfaced in a different manner.

I don't know how memory safety vulns could manifest differently in Java or Rust.

> In other words, we're constantly told C and C++ are unsafe languages they should never be used and blah blah blah. How much of this is because of the fact that C has been around since the 1970s, so its had a lot more time to rack up large apps with security vulnerabilities

That doesn't address the veteran C programmers who say they can't reliably write secure C code (that's new code, not 50 year old code).

> Are these errors due to the language, or is it because we will always have attackers looking for vulnerabilities that will always exist because programmers are fallible and write buggy code?

A memory safe language can't have memory safety vulnerabilities (of course, most "memory safe" languages have the ability to opt out of memory safety for certain small sections, and maybe 0.5% of code written in these languages is memory-unsafe, but that's still a whole lot less than the ~100% of C and C++ code).

Of course, there are other classes of errors that Java, Rust, Go, etc can't preclude with much more efficacy than C or C++, but eliminating entire classes of vulnerabilities is a pretty compelling reason to avoid C and C++ for a whole lot of code if one can help it (and increasingly one can help it).

Re: The computers are fast, but you don't know it

#287
post #54

Earlier quoted context omitted.

Not that it invalidates anything you said, but it was 750ms vs 200 microseconds. But yeah. I agree. Why does Lightroom take forever to load, when I can query its backing SQLite in no time at all? And that's not even mentioning the RAM elephant in the room: chrome. Younglings today don't understand what a mindbogglingly large amount of data a GB is. But here's the thing: it's cheaper to waste thousands of CPU cores on…

> But here's the thing: it's cheaper to waste thousands of CPU cores on bad performance than to have an engineer spend a day optimizing it. No, it really isn't. It's only cheaper for the company making the software (and only if they don't use their software extensively, at that).

It depends.

Run the lifetime cost of a CPU, and compare it to what you pay your engineers. It's shocking how much RAM and CPU you can get for the price of an hour of engineer time.

And that's not even all! Next time someone reads the code, if it's "clever" (but much much faster) then that's more human time spent.

And if it has a bug because it sacrificed some simplicity? That's human hours or days.

And that's not even all. There's the opportunity cost of that engineer. They cost $100 an hour. They could spend an hour optimizing $50 worth of computer resources, or they could implement 0.1% of a feature that unlocks a million dollar deal.

Then having them optimize is not just a $50 loss, it's a $900 opportunity cost.

But yeah, shipped software like shrinkwrapped or JS running on client browsers, that's just having someone else pay for it.

(which, for the company, has even less cost)

But on the server side: yes, in most cases it's cheaper to get another server than to make the software twice as fast.

Not always. But don't prematurely optimize. Run the numbers.

One thing where it really does matter is when it'll run on battery power. Performance equals battery time. You can't just buy another CPU for that.

Re: The computers are fast, but you don't know it

#288

Earlier quoted context omitted.

I have an M1 Air right I'm typing on right now and have not had any sluggishness concerns besides when switching between Spaces. Even that is more of a visual stutter instead of actually lagging to the point the animation takes longer than usual. This is the first thin & light computer I've owned that I'm 100% happy with its performance.

Switching between spaces on this M1 takes multiple seconds. It's almost unbearable. My 8-core 64GB Windows machine fares no better. Switching between OLVWM desktops on my 200MHz Pentium Pro twenty years ago was instantaneous.

Weird. I don't use Spaces (this is the multiple desktops thing, right?) but I've just tried it and it's not laggy at all for me. I turn on the reduce motion thing, so it fades between them rather than swiping, but neither feel laggy.

(I'm on an M1 Air and I think the performance is great)

Re: The computers are fast, but you don't know it

#289
post #63
post #11

Yup. We have gotten into the habit of leaving a lot of potential performance on the floor in the interest of productivity/accessibility. What always amazes me is when I have to work with a person who only speaks Python or only speaks JS and is completely unaware of the actual performance potential of a system. I think a lot of people just accept the performance they get as normal even if they are doing things that ta…

Agreed that switching to lower level languages give the potential of many orders of magnitude. But the thing that was most enlightening was that removing pandas made a 9900% increase in speed without even a change to language. 20 minutes down to 12 seconds is a very big deal, and I still don't have to remember how to manage pointers.

I don’t believe orders of magnitude is achievable in general. Even python, which is perhaps the slowest mainstream language clocks in at around 10x that of C.

Sure, there will be some specialized program where keeping the cache manually small you can achieve big improvements, but most mainstream managed languages have very great performance. The slowdown is caused by the frameworks and whatnot, not the language itself.

Re: The computers are fast, but you don't know it

#290

Earlier quoted context omitted.

Of video. Which probably was 30 fps. I mean, the splash screen just blinked for a barely noticeable split second before the main window appeared. You double click the shortcut, and it's already done launching before you realize anything. That's how fast modern computers are. (actually, some things on the M1 are fast enough that I'm now getting annoyed at networking taking what feels like ages)

Why would you assume video is at 30fps? Geographic location? People not in the US (and a handful of other countries) would assume video framerate of 25fps. Does the refresh rate of a computer monitor get referred to as frames? Usually, it's just the frequency like 120Hz type units. Sorry for the conversation break, but I've just never heard app start up times with a framerate reference. Was just an unusual enough thi…

Oh ffs. First off, I'm not from the US. I've been there for less than a month combined. Secondly, if you do want to nitpick, at least do some research first. The video in question is 60 or 30 fps depending on the quality setting.

    $ yt-dlp -F https://www.youtube.com/watch?v=j_4iTovYJtc
    [youtube] j_4iTovYJtc: Downloading webpage
    [youtube] j_4iTovYJtc: Downloading android player API JSON
    [youtube] j_4iTovYJtc: Downloading player df5197e2
    [info] Available formats for j_4iTovYJtc:
    ID  EXT   RESOLUTION FPS │   FILESIZE  TBR PROTO │ VCODEC       VBR ACODEC      ABR     ASR MORE INFO
    ─────────────────────────────────────────────────────────────────────────────────────────────────────────────
    sb2 mhtml 48x27          │                 mhtml │ images                                   storyboard
    sb1 mhtml 80x45          │                 mhtml │ images                                   storyboard
    sb0 mhtml 160x90         │                 mhtml │ images                                   storyboard
    139 m4a   audio only     │   46.85MiB  48k https │ audio only       mp4a.40.5   48k 22050Hz low, m4a_dash
    249 webm  audio only     │   49.06MiB  51k https │ audio only       opus        51k 48000Hz low, webm_dash
    250 webm  audio only     │   63.84MiB  66k https │ audio only       opus        66k 48000Hz low, webm_dash
    140 m4a   audio only     │  124.33MiB 129k https │ audio only       mp4a.40.2  129k 44100Hz medium, m4a_dash
    251 webm  audio only     │  125.02MiB 130k https │ audio only       opus       130k 48000Hz medium, webm_dash
    17  3gp   176x144      8 │   56.70MiB  59k https │ mp4v.20.3    59k mp4a.40.2    0k 22050Hz 144p
    160 mp4   256x144     30 │   37.86MiB  39k https │ avc1.4d400c  39k video only              144p, mp4_dash
    278 webm  256x144     30 │   42.59MiB  44k https │ vp9          44k video only              144p, webm_dash
    133 mp4   426x240     30 │   84.31MiB  87k https │ avc1.4d4015  87k video only              240p, mp4_dash
    242 webm  426x240     30 │   70.03MiB  72k https │ vp9          72k video only              240p, webm_dash
    134 mp4   640x360     30 │  167.27MiB 174k https │ avc1.4d401e 174k video only              360p, mp4_dash
    18  mp4   640x360     30 │  352.24MiB 366k https │ avc1.42001E 366k mp4a.40.2    0k 44100Hz 360p
    243 webm  640x360     30 │  134.68MiB 140k https │ vp9         140k video only              360p, webm_dash
    135 mp4   854x480     30 │  294.98MiB 307k https │ avc1.4d401f 307k video only              480p, mp4_dash
    244 webm  854x480     30 │  233.37MiB 243k https │ vp9         243k video only              480p, webm_dash
    136 mp4   1280x720    30 │  653.31MiB 680k https │ avc1.4d401f 680k video only              720p, mp4_dash
    22  mp4   1280x720    30 │ ~795.07MiB 808k https │ avc1.64001F 808k mp4a.40.2    0k 44100Hz 720p
    247 webm  1280x720    30 │  548.72MiB 571k https │ vp9         571k video only              720p, webm_dash
    298 mp4   1280x720    60 │  817.18MiB 850k https │ avc1.4d4020 850k video only              720p60, mp4_dash
    302 webm  1280x720    60 │  651.39MiB 678k https │ vp9         678k video only              720p60, webm_dash
And the units? Hz and FPS are generally interchangeable but FPS is more often used as a measure of how fast something renders while Hz is more often used for monitor refresh rates (a holdover from CRTs I guess).
Post reply on HN