🌟 [Post of The Day] iMac (24-inch, M1, 2021) - Acoustic Performance
Sound Pressure Level Lp A,m (dB)Operator Position LW A,m (B)Idle1.7 (KV = 0.3)7Wireless web1.7 (KV = 0.3)7
LW A,m is the mean A-weighted sound power level, rounded to the nearest 0.1 B.
Lp A,m is the mean A-weighted sound pressure level measured at operator position (rounded to the nearest 1 dB).
1 B (bel) = 10 dB (decibel).
Kv is the statistical adder for computing upper-limit of A-weighted sound power level.
The quantity, LW A,c (formerly called LW Ad) may be computed from the sum of LW A,m and Kv .
The Wireless web test browses 25 popular websites.
Configurations tested: a) Apple M1 chip, 8-core CPU/8-core GPU, 8GB memory, 512GB storage, 4-ports b) Apple M1 chip, 8-core CPU/7-core GPU, 8GB memory, 256GB storage, 2-ports.
Where do you get those great Mac icons? Good news: you’ve already got them, buried deep within macOS’s labyrinthine folder structure. From the Finder, just hit command-shift-G to bring up the Go to Folder window and enter the following path:
In that folder you’ll find a bunch of macOS’s icons, from System Preferences panes to menu bar icons to, yes, pretty much every Mac model Apple has ever made in the last twenty years or so. (The oldest I could find were from the G4 era.)
CPU performance improved tremendously over the years (y axis is in a logarithmic scale), while the memory performance increased at a much slower pace:
In 1980 the RAM latency was ~1 CPU cycle
In 2010 the RAM latency was ~400 CPU cycles
The main problem that we have today lies in utilizing the CPUs to their full potential.
The following table displays the latency numbers of common operations. Scaled latency column represents latency in numbers that are easier to understand for humans [...]: for the vast majority of applications the CPU is waiting for the memory.
The programming languages, which we are still using today, were made in time when the processors were slow and the memory access latency wasn’t much of a problem.
The industry best practices are still revolving around the object oriented programming which does not perform well on a modern hardware.
Most of the modern programming languages are trying to make your life easier by taking away the sorrows of manual memory management. While not having to think about the memory is going to make you more productive, that productivity comes at a heavy price. it’s getting harder and harder to exploit our CPUs to their full potential while still managing the complexity of the modern programs.
Every time you request a byte of memory that is not already present in one of the CPU caches, an entire cache line is fetched from the main memory even if you need only 1 byte. Since fetching the data from the main memory is quite expensive (see the latency table above)
Can we rewrite our program in a way that would be more prudent with fetching the memory and thus improve the performance of our program? -- The data oriented approach
Why is an object oriented approach so popular if it performs so badly?
most langs support it; easy to wrap your mind around the notion
The performance requirements for most enterprise software are embarrassingly low
The ideas in the industry are moving slowly and the software cultists refuse to change.
Data oriented way of programming has its own set of problems
tedious custom sorting functions
jupp0r, disputing: The implicit premise of the article seems to be that all software has to be heavily optimized. This is completely wrong. - The beauty of compilers is that they do a decent job of optimizing the 99% of code that would otherwise never be optimized, at 0 cost. - noobermin, contrasting: This attitude is very common and has clearly degraded software development particularly for users, and like most issues afflicting modern software it's not perceived by developers so it "doesn't exist" to them. As the top reply to this mentioned, anyone can easily tell how much slower software is today even when computers and devices are so fast now
lordnacho: If you imagine a game that has characters, relationships, items, spells, and so on, it's often not that easy to model as encapsulated objects.
Does each character have a list of other characters that they have a relationship with? What happens when you want to change the relationship, or a character casts a spell that temporarily changes the relationship? Can easily end up a mess, because it's not obvious where such things should live in an OO model.
the question then is if you only own the logo, and write the manual and do the logistics, can you still innovate?
The smart people will not work for your company, because you have turned into a marketing and financing exercise. And the smart engineers, they want to build better toasters, they want to touch actual stuff. So the thing is, there is a point of no return.
The problem is that this is not just a toaster problem. This is a continental problem. All over Europe, this is happening simultaneously, where we’re saying, look, we’re not that much into actually building things anymore.
So for example, invoicing, you’d think that sending out bills was core to telecommunications, but that also has been outsourced. So a typical telecommunications company, does not send equipment to its customers, does not design equipment, does not install equipment, does not maintain equipment does not send bills to its customers.
the core of the company is no longer building something, the core of the company is buying something, and managing risk with contracts and procedures.
if you just continue to sit there and complain, you’re not helping. One of the real big problems here in Europe is we do not have a lot of spin offs. We have some very exciting startups that do very exciting things, but we do not have a lot of solid spin offs, where people start their own thing.