Comment by 64mb

10 years ago

TL;DR Facebook app has 18k classes, if you want to know what they are look here: https://gist.github.com/quellish/473f513fbd1310233a8e

FB App is 114MB in size, but loading this page in Chrome will use a good 450MB, idk how they managed that.

yeah the website presents it in bloated HTML unfortunately. Here is the content:

-------------------------------

How on Earth the Facebook iOS Application is so large

Recently someone on reddit asked “How on earth is the Facebook app size so large ?”. The person asking the question realized that the ~100Mb compressed App Store archive wasn’t all assets - a very large portion was the application binary.

How do you answer that question? You quickly reverse engineer the application!

1 Download the binary to a jailbroken device from the App Store

2 Find the application on the device. SSH into the device and find the application container on the filesystem:

find / -type d -iname "SomeApp*.app"

3 Decrypt the binary Install dumpdecrypted on the device. Follow the instructions for using it.

4 Get the files off the device using scp or rsync. In most cases you will want the application container, the decrypted binary, and the application data container (i.e. what it writes out to the filesystem).

At this point you have the decrypted binary and it’s files. You can now run class-dump on the binary and output a directory of header files for all the classes in the binary, or you can use a disassembler like IDAPro or Hopper to easily see all the classes, symbols, etc.

In the case of the Facebook application, there are more than 18,000 classses in the application:

[... list of all the classes ...] https://gist.github.com/quellish/473f513fbd1310233a8e

There is a LOT of crap in there. Even a “FBFeedAwesomeizer” - which alone is a collection of 74 classes and protocols.

This is why the application binary itself is over 114Mb.

> FB App is 114MB in size, but loading this page in Chrome will use a good 450MB, idk how they managed that.

Comparing the size of the binary with the size of the memory used by the live program is apples to oranges. The two metrics don't have any correlation whatsoever.

  • He doesn't compare the size of the binary with the size "of the memory used by the live program".

    He compared the size of the binary with the size (in Chrome's memory) of the idiot's webpage complaining about it.

    Which he obviously knows is Apples to Oranges, but it's still fun to know and illuminating (the guy blames FB for being too careless with their app size but is too stupid to watch for his web post's size).

    • I love how easily some ppl on HN call someone an idiot. Way to encourage people to share.

      I found it interesting even if my browser ate 260 whatever MB of memory. Doesn't make him an idiot, just a little bit lazy about optimizing his blog (which is not used by millions like the Facebook app)

      It seems none of the cool kids with lean blogs managed to post this stuff or get it on HN. I'd love to read their articles about it, but hey, they don't seem to exist.

      3 replies →