Blinking Cursor Devours CPU Cycles in Visual Studio Code Editor (theregister.co.uk) 236
An anonymous reader shares a report on The Register: Microsoft describes Visual Studio Code as a source code editor that's "optimized for building and debugging modern web and cloud applications." In fact, VSC turns out to be rather inefficient when it comes to CPU resources. Developer Jo Liss has found that the software, when in focus and idle, uses 13 percent of CPU capacity just to render its blinking cursor. Liss explains that the issue can be reproduced by closing all VSC windows, opening a new window, opening a new tab with an empty untitled file, then checking CPU activity. For other macOS applications that present a blinking cursor, like Chrome or TextEdit, Liss said, the CPU usage isn't nearly as excessive. The issue is a consequence of rendering the cursor every 16.67ms (60 fps) rather than every 500ms.
Holy Blinking Cursor, Batman! (Score:5, Funny)
13 per cent CPU. For a blinking cursor. That's... impressive.
But not in a good way
Re:Holy Blinking Cursor, Batman! (Score:5, Insightful)
13 per cent CPU. For a blinking cursor. That's... impressive. But not in a good way
This is why coding tests are given during job interviews.
Re:Holy Blinking Cursor, Batman! (Score:5, Interesting)
Reminds me of the map of system calls in Apache vs MS IIS [ttias.be]. An exercise in design analysis.
Re: (Score:2)
That's why rapid prototyping skills are good for prototyping but are horrible at making a product.
Re: (Score:2)
If coding tests were so important they would require you to submit to them every year.
Your job performance is the followup "coding test".
They are in fact nothing to do with code but giving someone a problem and watching how they react.
If they react in a catastrophically bad manner that is useful data.
No test can in fact reveal how much knowledge a person has, just how well they do in certain situations.
True, but it can help demonstrate how little they know, if they fail one situation after another after another.
Re: (Score:2)
Your job performance is the followup "coding test".
That'd be fine, except it's extremely hard, labor intensive, and legally risky to "fire" someone. I'm not describing the way it should be, only the way it is.
Re: (Score:3)
But really. In psychology, it is known that accessing memory while attempting to learn hampers your ability to learn. Internalizing a concept such that you no longer need to access memory, but instead "just think that way" frees up your memory. A typical person can only hold a hand full of concepts in their head at once. If you're dealing with a complex system, memorizing it is incredibly inefficient. Learning to think like the system allows you to
Re: (Score:2)
Q. What is the Liskov substitution principle?
I would probably ask something like:
Q. A Square class is derived from a Rectangle class. Function foo has a non-const parameter of type Rectangle. Function foo is called using a variable of type Square. Is this safe, if not why?
Re: (Score:2, Interesting)
I hire C++ developers. I give a simple coding test to all applicants. 95% of all coders fail even the simplest of tests. There's a reason that trivial tests like FizzBuzz [c2.com] are used during programmer interviews. That's because most "programmers" are utter crap. They don't know their tools. They don't know the language that the program in. They don't stay up-to-date. They cannot reason about problems. 95% can't do the simplest of problems. You have to really deep before you find people who can talk a
Re: Holy Blinking Cursor, Batman! (Score:5, Insightful)
There's a difference between remembering the piece of trivia that is the name a certain environment calls a concept and understanding the concept.
The question becomes: are you looking for a software engineer, a computer programmer, or a trivia expert?
Re: Holy Blinking Cursor, Batman! (Score:4, Interesting)
I agree there. I have used many programming languages and so many of them make up their own terms for things that were previously well known by different names in the industry. Most of these new terms were for things that were known in the 70s and 80s. I think a lot of people who are in their own bubble, making up their own terms, without knowing what goes on elsewhere.
Yes (Score:2)
Re: (Score:3)
A perfectly fine answer is "No, I've never heard of it before. What is it?" Then we can have a conversation.
Perfect. Sadly, then you write the following ...
I'm not looking for trivia experts ... A lot of my questions are to probe whether they have bothered to read books that are not typically part of the college curriculum but are important references for a professional software engineer.
Perhaps a beginning software engineer. As one with 30+ years of experience I might look at a summary of Martin's SOLID topic and think "not much new here", low priority or pass.
"S Single responsibility principle
a class should have only a single responsibility (i.e. only one potential change in the software's specification should be able to affect the specification of the class)
O Open/closed principle
“software entities should be open for extension, b
Re: Holy Blinking Cursor, Batman! (Score:2, Insightful)
This reminds me so much of that rookie question: "what programming languages do you know?"
I dunno, with a reference manual, all of them. It is immaterial because I'm going to have to learn another one for the next project or the next software platform.
And they'll have their own names for common ideas, which you'll see once and realize what it actually is.
Re:Holy Blinking Cursor, Batman! (Score:5, Insightful)
"What is the Liskov substitution principle? [stackoverflow.com]"
I didn't know what it was until I looked it up in the article. So basically you want me to remember that some guy came up with a name for using inheritance and if I don't remember it I'm a bad programmer?
Test to see how the person will fit into your team because no matter how great they are if they disrupt how the team works. Then for programming skill and then for things like remembering the exact definition of terms that they could use Google to get.
Re:Holy Blinking Cursor, Batman! (Score:5, Insightful)
Re: (Score:2)
From the article linked to: "Functions that use pointers or references to base classes must be able to use objects of derived classes without knowing it."
That's pretty much using inheritance. I don't care if I point to A or the subclass of A. Whoop-dee-doo. I'm making use of the inheritance.
Re: (Score:3)
It gets worse. He only hires C++ developers who are MIT alumni and who know Barbara Liskov personally.
You had me at C++.
Re: (Score:2)
For some of this I disagree. Liskov Substituion principle is not the sort of thing you run across in school or in the workplace, unless you hang out with the sorts of people who have memorized all the design patterns by name. Now if you're in a specialized field of sofware design then you're much more likely to know Liskov substitution prinicple but outside of that I think it's rare.
Analogously I ask about Priority Inversion and Deadlock, because that's the context I'm dealing with. I am not surprised if
Terrible interview questions ... (Score:5, Insightful)
What is the Liskov substitution principle?
That is a very poor question. It exhibits the common naive programming test that is more of a trivia test, or basically a programming test derived from some old college quiz. Better questions ask people to perform relevant tasks or to discuss relevant problems. For example rather than ask about "Liskov", ask about the concepts involved:
Q. A Square class is derived from a Rectangle class. Function foo has a non-const parameter of type Rectangle. Function foo is called with using a variable of type Square. Is this safe, if not why?
Note that in the discussion they may inadvertently discuss class invariants.
You say that some programmers do not understand or lack certain tools. The same is true for managers, and your hypothetical questions suggest that you may be lacking the tools necessary to conduct technical interviews and evaluations.
Re:Holy Blinking Cursor, Batman! (Score:4, Insightful)
That's because most "programmers" are utter crap. They don't know their tools. They don't know the language that the program in. They don't stay up-to-date.
I don't "know the tools" or "know the language" until I'm fucking using them. Then I google whatever the fuck it is I need to do using whatever the fuck it is some clown has put in front of me, RTFM, and get it done. Interviews test for the dumbest fucking shit. I for one generally don't care what fucking language or environment I'm in. With documentation (the fucking internet 99.9% of the time) learning how to do X in Y is trivial. Knowing that you need to do X instead of x is the trick. When you give an applicant a test to do X in Y, you're just testing if they know Y and maybe if they have memorized X. You're not finding out if they understand anything or can think critically.
They cannot reason about problems. 95% can't do the simplest of problems. You have to really deep before you find people who can talk about design principles, design by contract, etc.
When your "problems" are all pulled from the same "Shitty Questions and Tests for Shitty Interviews" site/book, what do you expect? If you're looking for people who talk about "design principles" or "design by contract", you're retarded. There are only three design principles: Correct, secure, and fast. There is only one design contract: Deliver X for $Y. If you don't understand what X is or why it's X and not x (even if the customer doesn't, or if the customer asks for X when they need x) then you're gonna have a bad time. See Oracle and IBM and anyone who's ever contracted with them.
You're getting mindless applicants because you're asking mindless questions. You cannot discern a competent programmer/developer from an incompetent one because you're looking for memorization, certifications, etc. Of course, the people conducting the interviews are typically not competent programmers/developers, so they don't know what else to look for or how else to evaluate applicants.
Re: (Score:3)
But even here the talent pool is miserable.
The talent pool is quite large but you're not looking for talented engineers. You're looking for people with a photographic memory.
Re:Holy Blinking Cursor, Batman! (Score:5, Funny)
"Tell me what a class invariant is."
Blank stare.
"What is the Liskov substitution principle?"
Deer in headlights.
Prove that every even number > 2 can be expressed as the sum of 2 primes
Empty look.
Show that the Riemann zeta function has its zeros only at the negative even integers and complex numbers with real part 1/2.
Panicked expression.
Demonstrate that If k graphs each having k vertices have the property that every pair of complete graphs has at most one shared vertex then the union of the graphs can be colored with k colours.
Runs from room.
Sigh, kids these days...
Re: (Score:2)
"Tell me what a class invariant is."
I don't know most terms myself. I typically self discover nearly everything that I know by thinking about a problem for a little bit. I didn't know the term "race condition" when I was 8 years old when I theorized they would be an issue within a few minutes of learning that multi-core CPUs exist. I've been using "tiling" for years to optimize memory access without knowing what it was called. These things just seem blindly obvious when you see the problem.
Re: (Score:3)
Some tests make sense. Others are head-scratching. For UNIX admin jobs, I have been asked moving a database from first normal form to DK normal form, but in reality, I've yet to see any DBA go past 3NF unless it is some specialized data warehouse/data mart task.
It was 1st NF --> 2nd NF --> 3rd NF --> BC NF when I went to college. I'd never get past your interview. But then I don't want a DB job so it's all good.
Re: (Score:2)
You ask me what a Liskov substitution is in an interview as a serious primary question and not just as trivia, I'm going to give you a deer in headlights. Afterwards, I'm going to look it up, find out what it was, and even if your company gave me a job offer I'm going to reject it because there's no way in hell I want to work with people who would ask obscure trivia as serious job interview questions. I would never fault a person for not knowing what Levenshtein distance was off the top of their heads.
After a lead engineer gave me a written programming test with a lot of such trivia questions I was back in the project managers office. He asked me how things went. I said OK, I skipped some questions since they were trivia easily looked up in references, things I have not needed to memorize since taking an exam in college. I then went on to describe why their test was flawed and how a better test would go about things. His response, "you're right, the test does sound like something just slapped together in
Re: (Score:2)
If you're a senior programme who claims to be programming every day, then a coding problem on an interview should be a piece of cake. If the candidate struggles at this then the message being sent is that the candidate will need hand holding and remedial training and will not be able to function as a mentor.
Re:Holy Blinking Cursor, Batman! (Score:5, Insightful)
Re:Holy Blinking Cursor, Batman! (Score:4, Funny)
Opening VIM is the easy part. If you can successfully CLOSE VIM afterwards, that's the passing point.
Extra credit for a minimal number of beeps while using it. :-)
Re: (Score:2)
Re: (Score:2)
13 per cent CPU. For a blinking cursor. That's... impressive.
But not in a good way
Yeah, my old Commodore 64 had a blinking cursor, and it somehow managed that remarkable feat with an 8-bit 6510 CPU running at 1MHz!!!
Re:Holy Blinking Cursor, Batman! (Score:5, Funny)
Yeah, my old Commodore 64 had a blinking cursor, and it somehow managed that remarkable feat with an 8-bit 6510 CPU running at 1MHz!!!
Behold the power of Javascript! It gives a modern PC with 8-16 GHz of total CPU ... less actualy processing power than a Commodore 64.
Well done JS engine guys. Well done.
Re: (Score:2)
You always blame the language authors' for crappy code written in the language?
That's like blaming Shakespeare for what Trump says.
Re: (Score:3)
The engine devs are not the language authors. I think the language authors are idiots, too, but not for any reason related to this story.
Re: Holy Blinking Cursor, Batman! (Score:2)
...made worse by the fact that modern graphics subsystems are basically the descendant of a 3dfx card integrated onto the most minimal dumb hardware frame buffer possible.
It's why Android tablets (even fast ones) take at least a half second to render pdf pages using a 2.5GHz 4+ core SoC, but even a ghetto $150 mid-90s video card could do it instantly on a computer running at 100MHz... the old video cards had hardware spline acceleration. Now, they use the CPU to lay out 400 million triangles, then pump them
Re: (Score:2)
Indeed, and it didn't need that fsck'ing HARDWARE cursor emulation that the PC needed, either!
(Yes, Hercules, CGA, EGA and VGA had the text-mode cursor in hardware (including the blinking)). VGA (and maybe EGA, I forget) also had a single "sprite" for the "hardware" cursor.
I was coming here to make exactly this point. Cursors used to be hardware sprites that required no additional CPU cycles. At some point windowing systems took over the task of rendering the cursor, but still typically used XOR'd sprites to keep things fast and efficient. Then they started using GPU-optimized code and software CPU emulators as a fallback and things went downhill from there...
I still keep my 80s-era graphics programming books on my shelf as a reminder of how to do fast graphics when all you h
Re: (Score:2)
I mean, those 80s graphics books are well worth having, and excellent sources of how to take shortcuts when shortcuts are necessary.
However, it's worth remembering, that they're exactly that - shortcuts. The techniques used in those books are usually much less general than those used by modern windowing systems, and because of that, don't support all kinds of things that turn out to be important to user experience.
They don't support doing any kind of blending of layers, only blitting bits. They don't supp
Re: (Score:2)
Some (but not all) SVGA cards had a sprite for the mouse pointer, the VGA standard didn't.
The big problem of using software drawn mouse pointers on the normal PC was that there wasn't a vertical blank interrupt on most VGA and SVGA cards (the original IBM VGA did support it IIRC but strangely it wasn't copied in the clones). That meant that there wasn't a guarantee that the drawing of the pointer was complete in a certain displayed frame leading to flicker and tearing.
Compatible code had to assume that the
Re:Holy Blinking Cursor, Batman! (Score:4, Insightful)
The failure to understand anything more than any one level of the stack is the root cause of the problem:
In fact, I'm willing to bet it's not a coincidence that it's 13%. It's likely 12.5%, as in 100% of one thread on a quad-core CPU with hyperthreading enabled, then rounded up to 13% for the presentation in the task manager. On a dual-core with HT, it'd be 25%, on a dual-core without HT, it'd be 50%, and if anyone can get it to run on an old single-core Pentium IV or something it'll just peg that CPU.
People would have to know something about hardware to figure that out, and webdevs, well, they just... don't.
Re: (Score:3)
Preferences and then:
"editor.cursorBlinking": "solid",
Job done!
Re:Holy Blinking Cursor, Batman! (Score:4, Funny)
You probably just made it consume 100% of the CPU as it tries to flash the cursor at an infinite rate...
Re: (Score:2)
13 per cent CPU. For a blinking cursor. That's... impressive.
Yeah, but the blinking cursor looks so much more realistic when rendered at a full 60 frames per second. It really gives it that extra "pop".
That's what you get... (Score:4, Funny)
...when you hand the task over to the HALO crew. Absolutely NO flicker, man. Oh, wait...
Maybe they shouldn't use Javascript ... (Score:5, Funny)
Re: (Score:2)
Just be sure that each time the cursor is redrawn (even if it hasn't changed appearance from the last refresh) that you launch that Javascript environment in a fresh sandboxed VM. For safety. Think of the children.
Re: (Score:2)
No, as the C/C++ programmer, 0.13% of the CPU should be enough to render the entire screen at 60fps.
Probably a minor oversight. Will likely be fixed. (Score:5, Insightful)
Seems like a minor oversight. It will probably be fixed soon, if it hasn't already been.
Microsoft has actually done a good job with Visual Studio Code. It's a lot better to use than, say, Atom or EMACS. It has some great plugins, they're easy to install, and overall it provides a good compromise between a plain text editor and a full-featured IDE.
I'm not going to hold this minor bug against them.
Re:Probably a minor oversight. Will likely be fixe (Score:5, Interesting)
It looks like its actually an underlying issue with Chromium, which is what powers Electron, the UI framework which VS Code is based on.
https://bugs.chromium.org/p/ch... [chromium.org]
Re: (Score:2)
It looks like its actually an underlying issue with Chromium, which is what powers Electron, the UI framework which VS Code is based on.
Simple CSS Keyframe Animation Causes Too High CPU Usage
Well if this is the development approach for modern tools and applications I'm glad I splurged and upgraded to the i7 during build to order. It does seem true that software development practices "grow" to fit whatever amount of CPU resources are available.
Re:Probably a minor oversight. Will likely be fixe (Score:5, Insightful)
No, it sounds like the problem is the insane idea of running local code through a web browser. The web itself is probably the most Rube Goldberg-esque way of displaying interactive data and controls to a user (HTML, a backend language like PHP/Java, a client-based language (JavaScript), and then a crappy markup language for style attributes (CSS)). It's understandable how it evolved, but it makes no sense at all to use this for local applications.
Yet VSC is better than Eclipse, NetBeans, etc (Score:2, Interesting)
I've been a web developer for many years. I don't particularly like the entire web stack. Yes, it's shitty in many ways.
But here's the thing: somehow, Microsoft has managed to make an advanced text editor that's responsive, extensible, and enjoyable to use on all of the major platforms. And they've done it using some of those web technologies.
Visual Studio Code is an absolute pleasure to work with compared to IDEs like Eclipse or NetBeans or Intellij. It feels much faster than them, even with this blinking
Re: (Score:2)
Nah it's from Microsoft so it must suck! Enough said you heathen go use emacs like a good gnu like everyone else and gloat in your superiority of a better editor and wonder why anyone else hasn't come to your conclusions?
Re: (Score:2)
Of course, they should just change the User-Agent to "Microsoft Edge" and the CPU consumption will drop to 1%.
Re: (Score:2)
All the cool kids use node.js editors. Atom and brackets are no different in that regard as code. Can anyone verify if same bug appears?
Re: (Score:2)
Well IE 6 uses only 32 megs of ram. MS should silence the critics here and use vbscript and jscript then for the internals. No critics here for such a move then.
Re:Probably a minor oversight. Will likely be fixe (Score:5, Interesting)
Microsoft has actually done a good job with Visual Studio Code.
If you're willing to completely dismiss performance concerns then yes, great work. On the other hand, if you care about performance, and memory usage, it's pretty hard to do worse than VSCode without including including something like Eclipse or Intellij in the survey [github.com].
Re:Probably a minor oversight. Will likely be fixe (Score:5, Funny)
Emacs is very popular. Popularity seems to correlate highly with the set of users who once started up Emacs, were unable to figure out how to exit from Emacs, then had no choice but to write Emacs Lisp extensions to accomplish all other necessary tasks.
I don't think VS Code can make that claim.
Re: (Score:2)
Please do not knock Emacs.
Emacs is very popular. Popularity seems to correlate highly with the set of users who once started up Emacs, were unable to figure out how to exit from Emacs, then had no choice but to write Emacs Lisp extensions to accomplish all other necessary tasks.
I've always wondered how Emacs became my favorite operating system.
Gloves off! (Score:5, Interesting)
OK, buddy, vi vs. emacs flame wars were funny, and perhaps justifiable.
But comparing VS to emacs?? No freaking way! Emacs totally kicks VS ass.
And it never used 13% of my cpu to flash a cursor.
Re: (Score:2)
Well emacs has regularly consumed 100% of my CPU syntax highlighting. Which I always excused it of (its lisp what are you going to do (shrug)), but looking at those editor benchmarks I had no idea that vim and a bunch of other editors are actually worse.
Wow, if your editor consumes more ram and is slower than emacs then you are _REALLY_ doing something wrong.
Re: (Score:2)
Don't worry, I'm sure EMACs has a mode for it (and VI can emulate that mode).
Re: (Score:2)
Microsoft has actually done a good job with Visual Studio Code. It's a lot better to use than, say, Atom or EMACS. It has some great plugins, they're easy to install, and overall it provides a good compromise between a plain text editor and a full-featured IDE.
All joking aside, I will say that I quite agree with this statement. It's quickly becoming my go-to coding editor. Finally having a good experience that's the same on Linux and Windows is huge for me.
I just hope that the Git visualization support (history, blame, diffs etc) gets better, either in the core product or via plugins. Nothing on Linux has come close to the speed, ease of use, and feature set of TortoiseGit for me. All the existing plugins seem to want to render the log history as a single list, a
I think there is more to it. (Score:2)
Re:I think there is more to it. (Score:4, Informative)
According to TFA, adding "editor.cursorBlinking": "solid" to the app's settings.json fixes the high CPU consumption. That makes me think there isn't anything more to it.
Re: (Score:2)
Um, doesn't the operating system do that?
Re: (Score:2)
Um, real operating systems, used by those who wear big boy pants, have APIs to give you a callback when there are changes to a folder you designate for watching.
Re: (Score:2)
Perhaps it's monitoring the keyboard for input
Let's hope they are not that amateurish. I've run into that in my job more than once but it's always been in a homegrown app vs commercial software (well commercial software written in the past two decades at least). Software using an entire core waiting for user input. Developer "I wonder if that's why my laptop fan turns on when I leave the application sitting" Ya think?
blinking and beeping and flashing - (Score:2)
they're *flashing* and they're *beeping*. I can't stand it anymore!
Devil in the Details... (Score:5, Interesting)
Is it rendering the cursor specifically at 60 FPS, or is it the entire active window?
Because I can imagine a good reason for rendering the active window in an IDE every frame. Your brain is definitely capable of registering visual changes faster than once every 500ms.
If you have smart syntax highlighting, you want the squiggly lines, tab-complete indicators, color coding, and highlights to appear ASAP. The sooner you notice a mistyped function name, the less characters you have to back over to fix it.
A fast, responsive window refresh is essential to modern IDEs.
I mean, feel free to call them out if Eclipse or whatever is much better at it, but I can totally see why they would rerender the entire window. If it is the active window (per the summary), then you can assume it's being used and therefore deserves the most responsive output possible.
Re:Devil in the Details... (Score:4, Insightful)
Is it rendering the cursor specifically at 60 FPS, or is it the entire active window? Because I can imagine a good reason for rendering the active window in an IDE every frame.
Pro tip: when rendering an entire window, or an entire screen in a game, you might want to consider "dirty rectangles" and only redraw what has changed.
Re: (Score:2, Funny)
When you watch porn, all your screen is a "dirty rectangle".
Re: (Score:2)
Only if you watch Japanese porn.
Re: (Score:2)
Damn you, mosaic censorship! I'm trying to pixelate here!
Re: (Score:2)
The framework (Chromium) they used actually does that, but either there is a bug or they screwed up and made it think the whole window needs rendering every frame.
Re: (Score:2)
I smell a bug-fix at work here - something in the partial update rendering was not working on the first try, so they just render the entire window at 60fps and you never notice.
Responsiveness is good, but nervousness is not. When I'm staring at a page of code, I expect it to be static - not wobbling around at 60fps.
if (window.changed) { window.render() } (Score:2)
You shouldn't be rendering a window every few milliseconds if it hasn't changed. This:
function paint {
if (window.changed) {
window.render();
}
}
function render {
window.gdiPaint();
# In Windows, most screen elements are "window"s
for child window.children {
child.paint()
Re: (Score:2)
You should be letting the OS do all that management. I don't want the cursor blinking at different rates in every application. Let me set it up in the system preferences and don't think you know better than I do. How fast the cursor blinks doesn't actually impact how fast the window is refreshed.
Why are you wanting the red line to appear if you start to type a function name wrong? In Xcode when you start to type a function it lists all functions that match and as you continue typing the list gets smalle
60 FPS is the minimum these days (Score:5, Funny)
Well I would hope that a modern IDE released in 2017 would have 60 FPS! I also have the 4K cursor, HDR cursor, 3D cursor, Retina cursor, and VR cursor plugins all enabled, but I realize that may be overkill for some people. As soon as I get my new water cooling rig set up it'll be buttery smooooth.
Re: (Score:2)
Is it a good test? (Score:2, Interesting)
Re:Is it a good test? (Score:4, Insightful)
Re: (Score:2)
No.. 100/12.5=8. It's an 8 core (probably 4/8 HT). One core is being maxed out. Instead of idling, the code (chrome runtime) revolved around blinking the cursor is forcing the window context to refresh at the display refresh rate except only when it has to redraw (every 500ms).
Re: (Score:2)
Unless there is a 13% additional cpu usage when I doing something meaningful, it does not matter.
13% CPU is the difference between a CPU going to one of its C-states. i.e. It's the difference between 8 hours battery life and 3 hours battery life on many laptops.
You should be strung up by the short and curlies for suggesting that this kind of performance for a blinking cursor doesn't matter.
Maybe I'm just out-of-touch... (Score:2)
How is it that today's average 3+GHz 8-core badass CPU can be hobbled like that?
My jerry-rigged 486 DX/4-100MHz machine of 20 years ago didn't have that problem. What the hell am I missing?
My Pentium MMX 166MHz machine a year later was even less-handicapped.
GPUs, SSDs, there should be no excuses ... what crucial bit am I missing? I'm serious. I haven't written any code in a very long time and something critical got overlooked.
Re:Maybe I'm just out-of-touch... (Score:4, Insightful)
The constant unyielding unending march of useless abstraction.
hardware (hypervisor) -> kernel (per process hardware abstraction for userland) -> interpreted runtimes (nodejs/java/.net etc).
That last part is why modern 'apps' are bloated piles of garbage that need multighz machines to be responsive doing things that could be done on a 486 (eg winNT/mirc on a 486 vs discord on a haswell@4.7ghz). The argument is security and ease of development (zomg! cloud!). The former's been readily disproved and the latter sacrifices significant capability and performance. I think we're well past the point of diminishing returns and into the realm of significant drawbacks.
Re: (Score:2)
My jerry-rigged 486 DX/4-100MHz machine of 20 years ago didn't have that problem. What the hell am I missing?
20 years ago, people weren't trying to write a friggin' IDE in JavaScript of all things.
This is a bit absurd... (Score:3)
How is it that four decades into the personal computing era and ANYTHING in the UI is using any significant amount of CPU?
A blinking cursor?? The Apple II had a blinking cursor in 1977, and it was implemented in hardware. It used zero percent of the CPU.
My gods, programmers have gotten lazy. What's next, extra CPU consumption for bold text? The system slowing down every time it beeps?
Re: (Score:2)
My system slows down every time it beeps. I added a sound effect to let me know when a batch script completes:
powershell -c (New-Object Media.SoundPlayer "%exBinDir%\finished.wav").PlaySync();
It locks for about five seconds before finished.wav starts beeping.
Re: (Score:2)
My gods, programmers have gotten lazy. What's next, extra CPU consumption for bold text? The system slowing down every time it beeps?
Or, we could at least allow for the possibility that the behavior was unintentional. If you've never written a program that inadvertently spins a core rather than correctly blocking while waiting for the next event in the event loop, then feel free to cast the first stone, but I imagine most programmers have made that mistake.
don't use the 'web stack' for desktop applications (Score:5, Informative)
It duplicates functionality and kills performance
Re:don't use the 'web stack' for desktop applicati (Score:4, Interesting)
I partially agree. But I have a situation where I need to make a moderately simple app that reads/writes local files and calls out to utility command-line tools, and I need it to be cross-platform.
I've researched high and low for a system that doesn't require me to learn a friggin huge framework (QT?), in a language I don't care to use (C/C++)** or an unreliable end-user setup (Python UI or Java Swing)
I just need simple and I need it to work. Yes, Electron is bloated, but it's simple (to build apps with), it works on all platforms, and it allows me to build an app in a few days rather than a few weeks. And the performance for what I'm doing is perfectly acceptable.
** I don't dislike those languages, they are just overkill to get something simple done
Not a Microsoft Issue (Score:5, Insightful)
Microsoft describes Visual Studio Code as a source code editor that's "optimized for building and debugging modern web and cloud applications.
But then the article goes on to say...
The underlying issue is with Chromium, which is a part of the Electron Shell (Visual Studio Code and others like Atom and Slack utilize this shell in their apps)"
and then...
Google Chrome product manager Paul Irish, posting to a thread on Hacker News, said, "Chrome is doing the full rendering lifecycle (style, paint, layers) every 16ms when it should be only doing that work at a 500ms interval. I'm confident that the engineers working on Chrome's style components can sort this out, but it'll take a little bit of work."
Re: (Score:2)
Google Chrome product manager Paul Irish, posting to a thread on Hacker News, said, "Chrome is doing the full rendering lifecycle (style, paint, layers) every 16ms when it should be only doing that work at a 500ms interval. I'm confident that the engineers working on Chrome's style components can sort this out, but it'll take a little bit of work."
Why on earth would anything with a simple static 2D interface need to repaint every single frame? Yes, we can have nice animations - but does it really also need to refresh when no actual animation is going on? What madness is this? Who on earth writes a 2D gui framework and decides to just repaint at 60Hz whether the application is idle or not?
At any rate, this goes a long way to explaining where our computer power went. Apparently selectively refreshing the screen, and only doing so when necessary, are no
The blinking cursor writes, (Score:2)
and having writ, blinks on.
Way to go! (Score:2)
Cursorgate! (Score:2)
Why web apps tend to suck in general (Score:2)
When there are so many layers between you and "the metal", it's just a matter of time before one of those layers creates a road block. You can get around these road blocks in at least two ways: 1. install native code and get to the metal, or 2. use less efficient techniques to get around the block.
Taking route 1 means you can't claim "cross platform browser app" any more. Taking route 2 leads to slow code. It looks like MS chose route 2 and decided to use a frame-by-frame animation instead of using th
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)