The problem is the left hand side of the chain. Stop pulling in thousand layer garbage abstractions and making the user pay the penalty for it.
I’ve been/am currently burned by Firefox’s pretty poor IndexedDB support and performance. IDBObjectStore.getAll() fails with a cryptic exception if you store too much in IndexedDB (iirc 256mb is the limit), whereas Chrome and Safari have no problem with it. It also has terrible performance - about 4x slower than Chrome, with Safari having the best performance.
I'll look into some threeJS demos to see how it goes (ex. https://bruno-simon.com/ ). Are there any other specific JS demos you've had a bad experience with?
So far, I haven't found much of a difference in performance of websites but it's still early times for me.
Another example is iD[0] Editor on https://www.openstreetmap.org/. But there, to be fair, it's also slow on Chrome but I feel it's a bit slower on Firefox.
Oh man this was a rough one both for FF and Chrome but Chrome did perform better slightly on cursory glance.
Thanks for providing these links, they're definitely a good rule of thumb benchmarks to test new browsers
The issue was mentioned on Bugzilla (at least) 11 years ago[2], performance remains abysmal.
[1] - https://developer.mozilla.org/en-US/docs/Web/API/CanvasRende...
I don't use Twitch much anymore, but the one time I opened it recently (for NeoVimConf), it seemed much better.
Because the engines work differently, some are better at some parts and worse at others. That's just the name of the game when you have different implementations of something.
Not saying that work shouldn't be done do make them on-par with each other, just providing a reasoning why things are like they are. I remember at one point some Google product was using some JavaScript API for lots of things and obviously only tested things in Chrome, when testing it in Firefox the performance was a lot worse, as Gecko performed worse than V8 using the data structure/API. They ended up disabling Firefox access to it because of this.
Eventually, Firefox got the bug fixed I think, so the product enabled support for Firefox.
I guess the point is, the standards around the web platform say how the user should be able to use some API/format/structure, not much about how said API/format/structure is internally implemented.
> It's because they were only ever tested on Chrome during development.
It does in no way imply that FF is worse than Chrome, but it does imply that (some) web developers are lazy.
In Edge the page loads quickly and the loop is typically under 20ms.
In FireFox the page lags many seconds while loading and rendering, and several seconds when the loop involves a lot of hide/show of the table.
It's not that I haven't tested, it's that FireFox just isn't as fast as Edge. This simple approach relies on the browser handling a lot of items because I can't write a complex indexer in JavaScript and don't want to spend more effort on a low-use page and I refuse to put up with 'paging'.
Only in this one specific case. You don't know the other cases. What you do is write code and check if it's fast enough in Chrome. If it's not you change your code. You never check if it's fast in Firefox instead and then go on with your day, saying "well chrome's just slow".
Why would I care about the other cases? It's no use to me if FireFox is really fast at caching if I'm not using caching.
> "What you do is write code and check if it's fast enough in Chrome. If it's not you change your code."
I can't change my code, it's at the limit of (my understanding of JavaScript/web performance) crossed with (how much work time I can spend developing this page). I've already got rid of function calls in the inner loops, trimmed the data set aggressively, pushed more into SQL than in client side, have an out-of-band dataset generator so querying the DB isn't part of page load it's a static page served with static compression, it's taken days longer than I wanted to get even this functionality fast enough to be as fast as I want, if it needs double the time and SpiderMonkey performance expertise to cater for FireFox then the result is tell people to use Edge for it.
> "You never check if it's fast in Firefox instead and then go on with your day, saying "well chrome's just slow""
I did check if it was fast in FireFox and it wasn't. I carried on trying to make it faster until I ran out of ability and it went from 'okay I guess' on Edge to 'great that's what I hoped for' on Edge. And sluggish on FireFox. The reason I don't go on saying "Chrome's just slow" is because Chrome isn't.
Because you talk about the other cases when you make general statements like:
> it's that FireFox just isn't as fast as Edge.
> I can't change my code,
I wasn't suggesting you change anything about your code. Remember, the context of this conversation is this Statement by GP:
> I hate that I know exactly why. It's because they were only ever tested on Chrome during development.
The reality is that Firefox has a tiny market share at this point, so it is questionable how much time should be invested into optimizing pages to make them fast on Firefox. But that is a problem with Firefox's market position, not technology.
My point was that when code is slow in Chrome, you change it and never notice whether Firefox would have been faster in those cases. You only test code that is sufficiently fast in Chrome in Firefox. Thus, you don't usually see the cases where Firefox is faster than Chrome.
Your last paragraph is probably true in general, and true specifically for me because the Windows server I was using had Edge and didn't have Chrome or FireFox.
> "then do a batch change operation"
What would the 'batch change' be if not a loop over all the changes, making the changes one by one?