4 ms·
>I've seen some electron apps that run like dogs And almost no Qt apps run like that. "As long as I don't notice it most of the time, it's not slow." No, sorry
by bananaface 6y ago
>I've seen some electron apps that run like dogs
And almost no Qt apps run like that. "As long as I don't notice it most of the time, it's not slow." No, sorry, I don't agree. Frameworks should be fast. Slack is unforgivably slow.
>I think you mean the difference between SoA and AoS.
I mean literally in the interview when they do a nested for loop over primitives. Do they lose marks for going row-first? Why isn't that considered a basic rule? It's not complicated. Most interviewers don't even realise there's a difference (!!).
>I doubt optimising for DSPs/SIMD/big-data to maximize throughput and reduce cache-misses, is something the typical FAANG employee needs to know about.
Twitter is so bad it crashes my browser. It's 90% text! The only ram-hogs are auto-playing videos that dissapear after you scroll past them. These engineers are paid half a million per year. Half the time the website doesn't even load (!!!). That's insane.
>And you can optimise your in-memory data-structures (and database IO) later
Ehh, skeptical. Unless your data & algorithms are structured as contiguous arrays of primitives to begin with you're going to have trouble refactoring the abstraction.
- aprdm 6y agoFWIW I work in a place which uses a lot of C++ and cares a lot about performance. I have seen a lot of really bad Qt UIs as far as responsiviness. The Signal/SLot framework can get really hard to follow in huge code bases with lots of state. The whole thread interaction in Qt is not ideal. It is interesting because most of people are now actually using PyQT or pyside. Even with these being slower than pure Qt. Because it is easier to adjust to business requirements with Python. Oh, and I have personally rewritten some of these UIs in React and replaced them with a web browser which made them much more responsive.
- pantaloony 6y ago> Half the time the website doesn't even load (!!!). That's insane. I’d assumed Twitter showing me “an error occurred” on about 50-75% of inbound link-follows to their site, across multiple browsers on multiple operating systems, was an intentional “feature” to drive me to their app.
- bananaface 6y agoIt's a deliberate business tradeoff.
- h0l0cube 6y ago> Do they lose marks for going row-first? It's not objectively wrong to do this. Suggesting that "SoA is always right", tells me that maybe you don't understand the trade-offs between expediency, readability and performance... or understand the trap of early optimisation. Always measure first before optimising, otherwise write code that's easier to read, and simpler to write. > Twitter is so bad it crashes my browser. It's 90% text! Not sure how knowing how to micro-optimise cache-effects fixes these issues. Profiling and spending time on perf does, but they've decided it's just not worth their time. > Ehh, skeptical. Unless your data & algorithms are structured as contiguous arrays of primitives to begin with you're going to have trouble refactoring the abstraction. The keyword is refactor. Developers and organizations do it all the time - or at least they ought to. Disclaimer: Used to work in the video games industry. Literally worked for years doing perf, and cache-level optimisation.
- bananaface 6y agoYou're responding to things I didn't say. No, I don't mean SoA, I just said that. I don't think twitter is crappy because of cache misses, I think it's crappy because they don't have a solid understanding of what their code is doing. Ignorance of caching is another symptom. If you build your game on an entity-component system, you can't "just refractor" that to make it contiguous. Your structure is pretty baked.
- h0l0cube 6y ago> I don't think twitter is crappy because of cache misses, I think it's crappy because they don't have a solid understanding of what their code is doing. It's my hunch that you have little idea of what the code-bases for twitter are like, nor what factors are at play that affect usability issues. > If you build your game on an entity-component system, you can't "just refractor" that to make it contiguous. Moving to object pooling of components is very do-able. There might be some extra work, like extracting a generic matrix hierarchy and physics primitives out, but you'd only do such a thing if you found that d-cache misses on v-table lookups, or if i-cache misses due to update code churning were of real concern... and these could realistically be mitigated with homogenised object pools for the particular use case... though usually yes. Edit: I'd expect anyone on an engine team, or technical programmers at a game dev shop, or maybe even someone working on a browser renderer to have such knowledge from day 0, rather than the average FAANG employee.