• 0 Posts
  • 1.17K Comments
Joined 2 年前
cake
Cake day: 2023年6月30日

help-circle
  • It’s generally not as heavy because the layer is just reinterpreting API calls while the user code still runs natively. On a browser running JavaScript, it’s using an interpreter for every line of code. Depending on the specifics, it could be doing string processing for each operation, though it probably only does the string processing once and converts the code into something it can work with faster.

    Like if you want to add two variables, a compiled program would do it in about 4 cpu instructions, assuming it needed to be loaded from memory and saved back to memory. Or maybe 7 if everything had a layer of indirection (eg pointers).

    A scripting language needs to parse the statement (which alone will take on the order of dozens of cpu instructions, if not hundreds), then look up the variables in a map, which can be fast but not as fast as a memory load or two, then do the add, and store the result with another map lookup. Not to mention all of the type stuff being handled at run time, like figuring out what the variables are and what an add of those types even means, plus any necessary conversions. I understand that JavaScript can be compiled and that TypeScript is a thing, but the compiled code still needs to reproduce all of the same behaviour the scripting language does, so generic functions can still be more complex to handle calling and return conventions and making sure they work on all possible types that can be provided. And if they are using eval statements (or whatever it is to process dynamically generated code), then it’s back to string processing.

    Plus the UI itself is all html and css, and the JavaScript interacts with it as such, limiting optimizations that would convert it into another format for faster processing. The GPU doesn’t render HTML and CSS directly; it all needs to be processed for each update.

    For D3D to Vulkan, the GPU handles the repetitive work while any data that needs to be converted only needs to happen once per pass through the API (eg at load time).

    That browser render stuff can all be done pretty quickly on today’s hardware, so it’s generally usable, but native stuff is still orders of magnitude faster and the way proton works is much closer to native than a browser.







  • I’m never buying another Logitech device again because that problem that happened with my G7 back in the 00s still happened with my G900 in the 20s.

    With my G7, I’d open it up when it started happening, and open up the switch to re-bend the metal piece to give it some spring back. Kept doing this until one day the plastic button that presses down on that metal part fell on carpet and was gone forever.

    With my G900, I said fuck it and just bought some better mouse button switches and replaced the left mouse button. Was actually kinda glad I needed to because the battery had become a danger pillow so I replaced that, too.

    But with the button issue existing for so long and being fixed by a part that cost a trivial amount compared to what I paid in the first place, you can’t convince me that Logitech isn’t deliberately using switches that fail quickly to drive up demand for mice.













  • All cats are finely tuned stealth killing machines (though some are lazy). House cats are just optimized for rodent-sized prey, though they are still capable of putting up a decent fight against larger things. Though I’m curious if cats evolved to trigger “cute” recognition or if primates evolved to find things that include cats cute.