13 ms·
There’s plenty of room at the Top: computer performance after Moore’s law
- SlippyCrisco 6y agoYeah, (generally) we got lazy for sure.
- xellisx 6y agoI remember in the Windows 98 days, there was a program called GuitarFX that blew my mind. IIRC, it was only a couple MB in size, didn't use a lot of RAM, and was fairly low latency. I think I was running it on a PIII 500Mhz with 128MB of RAM. Now we have apps that are like 40+ MB, eat RAM and CPU cycles to do fairly simple things.
- rayiner 6y agoWhat’s mind boggling is the change in relative demand. Back in the 1990s, an IRC or AIM client was a little background app that took a tiny fraction even of a 64MB of RAM computer. But Slack takes a larger share of an 8GB if RAM computer.
- sys_64738 6y agoSlack is an electron app which is why it needs GBs to run. Native apps can run in a fraction of that. But the faster time to market is likely most bloated implementation.
- ncmncm 6y agoThat's garbage collection for you. Typical GC programs want all the memory there is, just to be able to sweep less often.
- imtringued 6y agoFrom my experiments with the JVM that is not really true. Keeping memory usage below 1GB is pretty easy. It's only getting tricky when you want to go below 200MB. You'll have to deal with the overhead the JVM introduces. As a result I often just use lua for really simple programs and I am rewarded by creating programs that use less than 2MB of RAM.
- pdimitar 6y agoWhich Lua kind/runtime you're using that give you such frugal programs? I'm intrigued (pun with your name intended).
- imtringued 6y agoOr good old Minecraft with 300 mods. It takes 20 minutes to start and even if you run the server embedded within the Minecraft client it will take 6GB at a minimum. Well, RAM is cheap so I just bought 32GB for $110 out of necessity but I still keep paying attention to how much RAM my programs need and avoid wasting it needlessly (using 4.6GB out of 32GB right now).
- Gibbon1 6y agoThere were functional spreadsheets that ran on a Apple ][ with 48k of RAM. Not to mention schematic capture and PCB layout programs that would run 'fine' on a 486 with 4 MB of RAM. So yeah it's disheartening to see programs with the same functionality of an old 16 bit 0x86 program using hundreds of MB's of RAM.
- lumost 6y agoI wonder how much of this is simply due to increasing expectations on interface and portability. Icons, borders, and fonts were tiny in the 90s and looked tiny. Programs ran for particular platforms and were often coded in the native platform's APIs and linked to specific binaries of a specific OS version. Now with expectations of high res iconogrophay, detailed and smooth fonts, as well as the expectation that an OS update shouldn't effect any of my apps - we inherently have bigger programs. The alternative approach could be taken, but it wouldn't be viewed as a mark of quality. Games like Destiny weighs in at >100GB with it's latest updates due to map and image needs, and the slack client runs smoothly across 5 Operating systems.
- zozbot234 6y ago"High-res" icons are still quite tiny. Expectations have definitely grown wrt. the complexity of text rendering: things like Unicode multi-language support, emojis and high-quality typography are taken for granted nowadays, and even something as simple as that would have required fairly high-end hardware back in the early-to-mid 1990s.
- m4rtink 6y agoAlso accessibility - I dont think people really cared about screen readers, high contrast rendering or configurable system wide font size back then.
- Ericson2314 6y agoOnly at the scale of the big tech companies do the machine costs start to seriously stack up against the labor costs. (Well, also smaller machine learning shops, but they are in trouble anyways.) And I don't think they fsce enough competitive pressure to be forced to take the massive foundational and educational investments they would need to pull this off. It won't happen with this generation of the industry.
- ineedasername 6y agoThe tooling infrastructure of code development itself needs to be optimized (not necessarily in speed terms) to provide coders with the information & tools necessary to write faster code. It seems like IDE's are currently optimized to facilitate rapid code development, but not development of rapid code.
- est31 6y agoThe issue is, most code only runs so few times that it doesn't really matter. Only when the code requires so much cloud resources that it's worth to spend an engineer's salary for a few hours/days to optimize it you should do it.
- adrianN 6y agoOr if your software aims to be successful on end-user devices. Only because you don't pay for the electricity or the faster machines, that doesn't mean that no carbon is emitted for producing them.
- est31 6y agoSlack is extremely slow and sluggish. Outside of the hn bubble, people seem to care more about features than about speed or carbon use. That being said, there are areas where users care about speed. For example, FPS is very important to gamers, so games are often highly optimized.
- abnry 6y agoI was always jealous of the stories about programmers in the 80s who wrote games in insanely small amounts of RAM. I kind of want that same kind of challenge needed to be overcome in my lifetime.
- karatestomp 6y agoWrite apps for Garmin watches, especially supporting ones a generation or two old and on the lower end. Welcome to the world of removing code to shave a couple KB off the space the code itself takes up in memory so you can use it for data. Oh and for some reason their language and APIs are OO despite the fairly tight memory limitations, and despite not having any real need to do that (nor enough memory to really take advantage of any OO features even if you wanted to). So you've really got to watch (haha) yourself.
- nradov 6y agoThere are a lot of crappy third party apps on the Garmin Connect IQ store which burn battery life or cause random crashes or interfere with activity recording. On the Garmin forum another user found that a third party data field causes erratic GPS tracks for open water swimming.
- karatestomp 6y agoSome of that might just be sloppy development but I have a feeling that part of it's the SDK's fault. It's a weird mix of being too abstract to let you take tight control of performance but not abstract enough that I ever felt confident it was doing a reasonable job of taking care of that for me. Though maybe I'm wrong and that part's fine, I don't think I ever benchmarked power use (another thing: the tooling is about as mediocre as you'd expect for a proprietary platform like that) I tell you what, though: having a declarative UI where "declarative" is "now draw text at coords [some coords]. Then draw a square of dimensions [dimensions] at coords [other coords]" is a fucking refreshing break from webdev. Even more so than regular mobile dev. There's simply no room on the devices for much screwing about. You've got your lifecycle methods and some calls that draw things. You can listen for button presses. That's about it as far as the UI goes.
- dang 6y agoThis is a knockoff piece but it links to the paper: https://drive.google.com/file/d/1PFCcP5WAE-64DlrRoZZE5NhC3ccy3zKD/edit https://drive.google.com/file/d/1PFCcP5WAE-64DlrRoZZE5NhC3cc... The paper's URL is https://science.sciencemag.org/content/368/6495/eaam9744 https://science.sciencemag.org/content/368/6495/eaam9744 but the text seems to be paywalled. We've put its title above.
- ncmncm 6y agoPaywalled? No problem: https://sci-hub.tw/10.1126/science.aam9744 https://sci-hub.tw/10.1126/science.aam9744
- rb12345 6y agoA lot of the details are covered in https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-172-performance-engineering-of-software-systems-fall-2018/lecture-slides/MIT6_172F18_lec1.pdf https://ocw.mit.edu/courses/electrical-engineering-and-compu....
- harikb 6y agoAnecdotal - One of favorite YouTube live-streaming personalities, Jon Gjengset[1] is a Ph.D student at MIT CSAIL. His talks are very detailed[4] and captivating[3] [1] https://thesquareplanet.com/ https://thesquareplanet.com/ Talks [2] https://youtu.be/s19G6n0UjsM https://youtu.be/s19G6n0UjsM [3] https://youtu.be/DnT-LUQgc7s https://youtu.be/DnT-LUQgc7s Rust Details(my favorites) [4] https://youtu.be/rAl-9HwD858 https://youtu.be/rAl-9HwD858
- monocasa 6y agoI always interpret the end of Moore's Law to mean that was once a curve of exponential growth, has shown where the inflection point is, and now we're on the other side of the S curve. Yes there's still gains to be had, but they're harder and harder in ways that aren't ameliorated by just increases in funding. There needs to be changes in how we compute, and a rejection of the idea that specialization is beat out by the economies of scale of generic solutions.
- jimmaswell 6y agoYou want more ASIC's? Why do you assume there's an unmet need for more specialized hardware?
- ahartmetz 6y agoIf you want something faster and more energy-efficient for any particular task, you do want an ASIC. You can try to tell physics that you'd prefer something else but physics is not a good listener.
- Exmoor 6y ago> "For tech giants like Google and Amazon, the huge scale of their data centers means that even small improvements in software performance can result in large financial returns," And really this is only for software that runs inside their servers. The costs for software running on client machines is just distributed to the user. If google makes a change that makes Chrome run less efficiently that means I'm paying for it with my time and electricity. If I want it to run better I'm shelling out money from my own pocket for new hardware.
- sillysaurusx 6y agoA bunch of you seem interested in taking up the challenge: having to write smarter software, wistful for the old days when it was forced on you. Turns out, you can! There's a big domain that needs your help, today: deep learning. A lot of the software is currently crude. For example, to train a StyleGAN model, the official way to do it is to encode each photo as uncompressed(!) RGB, resulting in a 10-20x size explosion. There's plenty of room at the top, and never moreso in AI software. Consider it! Every one of you can pivot to deep learning, if you want to. There's really nothing special or magical in terms of knowledge that you need to study. A lot of it is just "Get these bits from point A to point B efficiently." There's also room for beautiful tools. It reminds me a lot of Javascript in 2008. I'm sure that will sound repugnant for a majority of devs. But for a certain type of dev, you'll hear that ringing noise of opportunity knocking.
- zozbot234 6y agoThe highest-performance deep learning framework is most likely Theano which still has to be ported to current Python 3.x. There's quite a bit of low-hanging work to be found via fixing things like that.
- AlexCoventry 6y agoHighest performance by what metric? I thought Theano has been dead for a couple of years, at this point.
- TheSpiceIsLife 6y ago> There's a big domain that needs your help, today: Enterprise software! But we’re more likely to see true General Artificial Intelligence before we see a 2x increased in enterprise software performance.
- keenmaster 6y agoRobotic process automation (RPA) can really help boost the performance of enterprise software, and it is just starting to take off.
- philipkglass 6y agoI quote from the Conclusions section of the actual paper linked by dang: "As miniaturization wanes, the silicon-fabrication improvements at the Bottom will no longer provide the predictable, broad-based gains in computer performance that society has enjoyed for more than 50 years. Performance-engineering of software, development of algorithms, and hardware streamlining at the Top can continue to make computer applications faster in the post-Moore era, rivaling the gains accrued over many years by Moore’s law. Unlike the historical gains at the Bottom, however, the gains at the Top will be opportunistic, uneven, sporadic, and subject to diminishing returns as problems become better explored. But even where opportunities exist, it may be hard to exploit them if the necessary modifications to a component require compatibility with other components. Big components can allow their owners to capture the economic advantages from performance gains at the Top while minimizing external disruptions." (My emphasis on "economic advantages from performance gains.") Databases are still getting faster. You don't get a faster DB by buying a new server and then running a 10 year old version of SQL Server or PostgreSQL on it. Language runtimes are still getting faster. You don't get better Java or JavaScript performance by running a 10 year old release of the HotSpot JVM or V8. 3D renderers, video encoders, maximum flow solvers (one example examined in depth in the article): they're all getting faster over time at producing the same outputs from the same inputs. The key is incentives. There are probably people in your organization who care a lot if database operations slow down 10x. But practically nobody in your organization cares if Slack responds to key presses 10x slower or uses 100x as much memory as your favorite lightweight IRC client. (I'm trying to make a neutral observation here. Looking at it from 10,000 feet, I get annoyed when I see how much memory Slack takes on my own machine, but that annoyance wouldn't crack the top 20 priorities for things that would improve the productivity of the business I'm in.) The incentives problem is also why the Web seems slow. Browsers too are still getting faster. I used to run multiple browsers for testing and old Firefox and IE releases were actually much slower at rendering identical pages than current stable releases. But pages are getting heavier over time. Mostly it's not even a problem of people trying to make "too fancy" sites that are applications-in-a-browser. It's mostly analytics and advertising that makes everything painfully slow and battery-draining. I run a web site that has had the same ad-free, analytics-free, JS-light design since the early 2000s. It renders faster than ever on modern browsers. It's not modern browsers that are the problem -- it's the economic incentive to stuff scripts in a page until it is just this side of unbearable. For certain kinds of human-computer interaction, people will pay a lot to reduce latency. Competitive gamers will pay, for example. Sometimes people will invest a lot of effort to reduce memory footprint -- either because they're shaving a penny off of a million embedded devices or because they're bumping up against the memory you can fit in a 10 million dollar cluster. But the annoyances that dominate Wirth's Law discussions on HN -- why do we have to use Electron apps?! -- are unlikely to get fixed because few people are willing to pay for better.
- Stratoscope 6y agoFor anyone unfamiliar with the title's origin, it is a play on words of a 1959 Richard Feynman lecture, "There's Plenty of Room at the Bottom: An Invitation to Enter a New Field of Physics". https://www.google.com/search?q=there's+plenty+of+room+at+the+bottom https://www.google.com/search?q=there's+plenty+of+room+at+th...
- kens 6y agoAnd Feynman's title was a play on Daniel Webster's comment "There's plenty of room at the top" when told that he shouldn't become a lawyer because the field was too crowded.
- DC-3 6y agoI wonder if the author of this article was aware of the etymology or if it's a curious case of mutating references returning to the original?
- williamkuszmaul 6y agoDo you have a reference for Feynman's title being a play on Webster's comment? That would be neat to have.
- code-faster 6y agoYeah, but computer performance isn't a bottleneck in most applications, engineer performance is.
- Veedrac 6y ago> Unfortunately, Feynman’s “room at the bottom” is no longer plentiful. There's plenty of room at the bottom. Another million times the transistors is hardly implausible; a thousand times is practically a given. > Although other manufacturers continued to miniaturize—for example, with the Samsung Exynos 9825 (8) and the Apple A13 Bionic (9)—they also failed to meet the Moore cadence. This just factually isn't fair; transistor density has been on an unwavering straight line since 1970. https://docs.google.com/spreadsheets/d/1NNOqbJfcISFyMd0EsSrhppW7PT6GCfnrVGhxhLA5PVw https://docs.google.com/spreadsheets/d/1NNOqbJfcISFyMd0EsSrh...
- deepnotderp 6y agoTo be fair, it's not necessarily clear what to do with those transistors. When people think of Moore's Law, they usually think of all of CMOS scaling, Dennard scaling, faster clock speeds, etc Power may soon become the bottleneck as it's not clear that energy per op is going down as fast as transistors are going up
- wongarsu 6y agoPower is the bottle neck right now. We have 16 core processors were each core is capable of 4.7GHz individually. But we can't run all of the cores simultaneously at those speeds because we have trouble with power delivery and especially with dealing with the waste heat that comes with using that much power. The only way we can really use all that transistor density today is to artificially limit clock speeds to conserve power.
- pmoriarty 6y agoThere's plenty of heat at the bottom.
- ncmncm 6y agoImagine being a CPU architect and being told to find a good use for yet another billion transistors. It is hard to get much benefit from the N+1th multiplier when the ones you have are already starved for input, so it's not hard to see why now we mainly get more cores and cache. Cache is good because most of it is idle at every moment, so doesn't produce much heat. Cores are easy to count, and people will pay for them even if whenever they all get busy, you have to slow the clock after a moment. Often a moment is enough. Productive uses for a billion transistors that can be mostly turned off most of the time are hard to find.
- deleted 6y ago[deleted]
- Haga 6y agoFpga programming required
- P-NP 6y agoThere is even more room at the top. The physical limits are as follows. A computer "with a mass of one kilogram confined to a volume of a liter" can perform at most 2:71 * 10^50 operations per second on 2.13*10^31 bits. See: Lloyd, S. Ultimate physical limits to computation. Nature volume 406, 1047–1054 (2000) Bremermann, H. J. Minimum energy requirements of information transfer and computing. Int. J. Theor. Phys. 21, 203–217 (1982) Bekenstein, J. D. Energy cost of information transfer. Phys. Rev. Lett. 46, 623–626 (1981)
- reedwolf 6y agoFrom what I recall, that ultimate computer would have to be exploding to reach 10^50 operations.
- P-NP 6y agoIt would become very hot indeed. But that does not necessarily imply a runaway explosion. Just like the center of the sun won't explode anytime soon. Nevertheless, I'll take the much cooler model with only 10^44 operations per second.
- yodelshady 6y agoFYI, I optimised the "python3" code by using numpy. Total runtime on a laptop CPU was 1 s. This is why all classes for scientists I've seen teach numpy. (Incidentally: total time to "optimise" and TEST is less than 5 minutes. Total time to rewrite in Rust: ongoing after 2 hours, with issues filed on the best available crate for the task, whose documentation examples fail to compile. Not even going to try in bare Rust due to the issues with > 32 length arrays.)
- pdimitar 6y agoThis could also mean you're much better at Python than Rust?
- mD5pPxMcS6fVWKE 6y agoI am old. Computer hardware advanced 1000 times since 30 years ago. But computer software degraded at the same rate. We started with Pascal and C, and ended with PHP and JavaScript ... ughh.