Why are so many mobile browsers at least 100, if not 200 megabytes in size? Even Firefox Focus which is supposed to be small and, you know, focussed is 85MB big.
The smallest browser I could find was the /e/ Foundation’s built-in browser for /e/OS. It’s 12MB.
It’s kind of between Firefox and Focus in terms of features so why are all other browsers so big? Is there a small version of Firefox for Android?
Edit: I just looked up the /e/ Browser repo on their GitLab and the browser appears to be bigger than the 12MB displayed in App Info. It’s about 70MB, so pretty comparable to the other browsers. I was so confused by the size difference but that’s cleared up now.
Browsers are highly complex pieces of software. I had the opportunity to talk about browser engines with a hardware engineer for the chrome browser at GDC a year ago. Browser engines have to have more security than your operating system, while also interpreting DNS calls, rendering html/css, and interpreting JavaScript.
A basic html renderer would be small, like maybe a couple megabytes. But it would have absolutely no security. On the Internet.
Compiling, these days. The JS runtime is a beast.
Fair. Webassembly is fast for a reason
Removed by mod
Kinda. The other person was right about JS basically getting compiled. Webassembly is like an intermediary language that executes at a similar speed to flash, because it’s more directly translatable to the runtime. Webassembly isn’t supposed to fill the gaps left by flash, but I think it’s a great option to get similar web apps
Web browsers are practically as complex as operating systems tbh
On my private laptop, the operating system’s only job is launching the web browser.
I am aware of the complexity of a modern browser. Still, 80+ megabytes for a simple browser like Focus seems excessive. Especially when the Bromite-based /e/OS browser can provide more functionality for an eighth of the size
When it comes to software, complexity usually means one of 2 things: time complexity or space complexity. They have an inverse relationship, so if you want something fast you need more memory, and vice versa. In regards to browsers, that means either waiting forever to execute each op or using large amounts of storage/memory.
Yeah, of course a lot is cached and stored in user data
but I don’t get why the app itself has to be so big. It’s not significantly faster.Edit: Never mind all that, I edited the post, the app size wasn’t correctly shown.
Caching is separate. Honestly, I don’t know how to explain it to you without giving you a college level explanation of time complexity.
Think about the most basic way to sort a list of arbitrary size; comparing the first item to the second item, swapping if the second item is smaller, and then repeating until no more swaps occur. This has a time complexity of O(n^2), so on a list of n size, it would be extremely cheap on memory (O(1)) but will take a very long time if n is large.
There’s another sorting algorithm called quicksort that is much faster (how it works isn’t very important atm), with a time complexity of O(nlog n). This is far faster than the other method of sorting, but it comes at the cost of needing a lot more memory to execute the algorithm, O(log n) of space.
If you scale this simple process to a multithreaded piece of software executing thousands of algorithms per second, like a browser, the size of n scales to the rest of the app. Browsers are generally written in C++, which requires memory to be preallocated. The size of the app includes this memory requirement, as well as the executable.
I understand, my confusion was caused by the misleading app size shown in App Info. It’s actually like 70MB so my question is dumb. I’m sorry for wasting your time
it’s not dumb, and you didn’t waste my time! I love teaching computer science to people. Honestly, this was kinda fun. I haven’t consciously thought about these concepts in about 6 years, so it was a good refresher for me too lol
I’m glad to hear that, I had fun, too. Thank you for your time and have an amazing day, kind stranger
Removed by mod
Removed by mod