Apps worden steeds groter, maar waarom?

Raymon op 20 juni 2017 12 reacties Laatste door abbenhui

De iPhone wordt standaard met 32GB opslag geleverd, maar met apps die steeds groter worden merk je daar steeds minder van. De gemiddelde bestandsgrootte van de meest populaire apps is de afgelopen jaren namelijk met meer dan 1000 procent gegroeid.

Analysebedrijf Sensor Tower schrijft in een nieuw rapport dat de tien populairste apps in 2013 samen slechts 164MB groot waren. Anno 2017 is dat maar liefst 1,8 GB. Vooral Snapchat en Facebook rijzen de pan uit.

Van 4MB naar 203MB

Een voorbeeld is Snapchat. In 2013 was de app slechts 4MB groot, maar nu neemt de app voor berichten die automatisch verdwijnen 203MB in. De Facebook-app is sinds 2013 ook 12 keer groter geworden, van 32MB in mei 2013 naar 388MB in juni van 2017. De app groeide met een update in september van vorig jaar met maar liefst 100MB. Opvallend is dat de grootste groei samen met de release van iOS 10 in 2016 plaatsvond.

top-10-ios-apps-size-by-month

Klik/tap voor groter.

Waarom? 4 redenen

Hoe komt het toch dat apps steeds groter worden? Sensor Tower gaat daar in zijn analyse niet op in, maar wij hebben wel een idee. Er zijn drie ontwikkelingen aan te wijzen.

  1. De eerste is meteen een open deur. Apps moeten steeds meer kunnen. Kijk bijvoorbeeld naar de functies die Facebook de afgelopen tijd heeft toegevoegd. Filters, stories, vrienden zoeken, stadsgidsen en meer. Het zijn functies die je waarschijnlijk niet dagelijks gebruikt, maar ze nemen wel de nodige ruimte in.
  2. Daarnaast zorgt de overstap naar Swift voor tijdelijk grotere apps. Omdat Apple’s eigen programmeertaal nog volop in ontwikkeling is, ziet de ABI (Application Binary Interface) nog niet in iOS verwerkt. Deze ABI is de lijm die de geprogrammeerde code vertaalt naar instructies voor iOS. De ABI van Swift is nog aan verandering onderhevig en daarom moet iedere app de volledige ABI bij zijn eigen code bundelen.
  3. Ook wordt steeds meer cross-platform ontwikkeld. Grote spelers als Twitter, Google en Facebook wisselen code voor iOS en Android uit in eigen frameworks. Ze gebruiken naast de frameworks die door Apple beschikbaar worden gesteld ook eigen frameworks en die moeten in de app gestopt worden, want ze zitten standaard niet in iOS. Dit is goed te zien bij de Twitter-app die op iOS en Android moet werken. Grootte? 214MB. Tweetbot werkt alleen op iOS en is maar 12,5MB groot.

    facebook opbouw

    De opbouw van de Facebook-app laat zien dat eigen frameworks de meeste ruimte innemen.

  4. Tot slot is het ook mogelijk dat ontwikkelaars geen tijd besteden aan het optimaliseren van hun apps. Als een functie werkt, is het goed genoeg om uit te brengen en wordt er niet naar optimalisaties gekeken. Er is in de meeste gevallen toch genoeg geheugen vrij en Apple beperkt de grootte van apps niet.

Apple’s antwoord: apps verwijderen

Apple ziet deze ontwikkeling ook en zet in iOS 11 een nieuw wapen in tegen apps die de pan uit rijzen. Een nieuwe functie verwijdert automatisch apps die je niet meer gebruikt. Apps worden alleen verwijderd als een tekort aan opslagruimte dreigt. Het icoon blijft overigens gewoon op je scherm staan en de gegevens bewaard. Als je de app opnieuw gebruikt, wordt deze weer gedownload.

deinstalleer apps 16x9

Klik/tap voor groter.

Raymon is vaste redacteur bij OMT, maar noemt zich liever redactieninja. Ook te volgen op Twitter en wekelijks te horen in de TechSnacks Podcast. Lees meer artikelen van Raymon.

En nu?

12 reacties

Profielfoto

pruus op 20 juni 2017

Op een Sinclair ZX81 had je maar 1 KB geheugen vrij om in te programmeren. En dan een spelletje maken was niet alleen veel werk, maar ook keuzes maken. Veel keuzes. We willen nu ook gewoon alles mooier, gestyled en flitsender hebben. En dan kost nou eenmaal code, dus geheugen. Spaghetti-programmeurs heb je in elke generatie gehad. En zal ook blijven.

Profielfoto

xaddict op 20 juni 2017

Jullie vergeten een belangrijk ding in de opsomming: afbeeldingen!
Apps als Facebook gebruiken veel hoge resolutie iconen terwijl er allang bibliotheken bestaan (van enkele KB’s) die SVG’s in kunnen laden en dus op élke schermgrootte scherpe iconen geven. Apple ondersteunt SVG echter niet standaard als afbeeldingsformaat en dat is mijns inziens een domme keuze.

Er zijn een aantal complexe apps die SVG gebruiken om iconen op het scherm te toveren en die zijn vele malen kleiner dan de mainstream apps. Code neemt over het algemeen een honderdste van de ruimte in die afbeeldingen (denk aan je splash screen en laadschern afbeeldingen en animaties) in een app innemen

Profielfoto

lalalalalalalalal op 20 juni 2017

Nog een ander punt, Facebook cached onwijs veel troep wat je eigenlijk niet wilt cachen. Er zit hier ook geen optie in om het te verwijderen. Je kan het zien via de ios instellingen hoeveel cache ruimte facebook gebruikt.

Verwijderen kan alleen door de app te verwijderen en opnieuw te installeren.

Profielfoto

iMac Lover op 20 juni 2017

Ik merk duidelijk, dat mijn iPad 4 duidelijk trager is geworden
Ik heb iOS 10.3. Beta 3 geïnstalleerd

Gisteren las ik een boek in iBooks
Een boek van plus minus 1000 pagina’s met vertalingen er in.
Het omslaan van de bladzijden was ongelooflijk traag

Vroeger moest je zuinig programmeren op een commandoor 64
Ik heb het gevoel, dat er tegenwoordig heel slordig wordt geprogrammeerd

Profielfoto

Poezenbeest [moderator] op 20 juni 2017

Het is inderdaad een luxe-probleem voor programmeurs dat er zoveel opslagruimte en geheugen beschikbaar is. Waarom zou je dan besparen op zaken?

Zelf probeer ik het wel zo zuinig aan mogelijk te doen met geheugen en opslag, waarom bijvoorbeeld alle getallen opmaken als long, terwijl je weet dat ze ook in een byte kunnen? Scheelt maar een factor acht. Misschien peanuts, maar als ik een paar duizend variabelen heb, dan merk je het verschil.

Zo zijn er wel meer van dat soort basis-dingen, zoals het SVG-voorbeeld hierboven.

Profielfoto

dj bazzie wazzie op 20 juni 2017

Belangrijkste reden mis ik hier toch wel: resources. Alles bij elkaar is toch gemiddeld resources zeker de helft van de grootte van het programma. Deze is de laatste jaren ook erg gegroeid. Op MacOS bijvoorbeeld als je kijkt naar je programma zoals Safari. Deze is maar 25mb maar 17mb is alleen al in gebruik voor icon files en 6 mb voor lokalisatie. De werkelijke code is dan nog geen 1MB. Uiteraard leunt Safari heel erg op systeem frameworks wat niet fair is tegenover applicaties zoals Facebook en Snapchat.

Pakken we een programma met hele eigen view met eigen frameworks zoals Visual Studio code zien we dat er alleen al 100mb aan resources in het programma worden gebruikt. Dan hebben we nog het 120mb electron framework waar het programma op draait maar ook daar hebben we de nodige MBs aan resources.

Of een programma erg leunt op eigen cross platform frameworks of op systeem frameworks minstens 50% van het programma is resources tot meer dan 95%. Toename in groei is dus niet alleen geschreven code.

Profielfoto

Cenobyte op 20 juni 2017

Als programmeur zijnde wil ik reden 1 toch voor een groot stuk relativeren. Ik heb zelf enkele lang lopende projecten waar steeds maar functionaliteit is aangebouwd en als ik kijk naar de runcode van de allereerste kale versie en de versie zoals het nu is, met meer dan 5x zoveel functionaliteit, dan is de afmeting nagenoeg niet zo hard meegegroeid.

Profielfoto

csteelooper op 20 juni 2017

Belangrijkste reden mis ik hier toch wel: resources. Alles bij elkaar is toch gemiddeld resources zeker de helft van de grootte van het programma. Deze is de laatste jaren ook erg gegroeid. Op MacOS bijvoorbeeld als je kijkt naar je programma zoals Safari. Deze is maar 25mb maar 17mb is alleen al in gebruik voor icon files en 6 mb voor lokalisatie. De werkelijke code is dan nog geen 1MB. Uiteraard leunt Safari heel erg op systeem frameworks wat niet fair is tegenover applicaties zoals Facebook en Snapchat.

Pakken we een programma met hele eigen view met eigen frameworks zoals Visual Studio code zien we dat er alleen al 100mb aan resources in het programma worden gebruikt. Dan hebben we nog het 120mb electron framework waar het programma op draait maar ook daar hebben we de nodige MBs aan resources.

Of een programma erg leunt op eigen cross platform frameworks of op systeem frameworks minstens 50% van het programma is resources tot meer dan 95%. Toename in groei is dus niet alleen geschreven code.

Zoals ik het lees, is wat jij als Resources aanmerkt, wel degelijk meegenomen in de beredenering. In reden (3) staat bijvoorbeeld vermeld dat de overgang naar Swift tijdelijk voor grotere apps zorgt omdat de Application Binary Interface in élke Application Bundle aanwezig moet zijn. Dat geldt eveneens voor elk eigen Framwork dat voor de verschillende platformen waarop een App draait, gedeeld wordt. Denk aan de elementen van Metallic in de Google Apps; die moeten voor iOS compleet van scratch worden geschreven voor elke App, omdat iOS daar zelf niet in voorziet. Eenzelfde verhaal geldt voor alle platforms anders dan Android en in mindere mate zelfs voor Android zelf (zie waar de vergaande aanpassing van het systeem door ‘partners’ (Samsung, anyone…?) toe leidt…
Enfin, dit alles hoort allemaal óók thuis onder Resources. Om nog maar te zwijgen van localisatie-bestanden en GUI-elementen, zoals je ze zelf al aanhaalde. Kortom: resources worden hier wel degelijk meegenomen in de beredenering, zij het niet zo evident…

Profielfoto

Q-collective op 20 juni 2017

Ik merk duidelijk, dat mijn iPad 4 duidelijk trager is geworden
Ik heb iOS 10.3. Beta 3 geïnstalleerd

Dat is volledig normaal bij een beta, want:
1. De software is nog in ontwikkeling en niet geoptimaliseerd en
2. Er lopen op de achtergrond allerlei feedback instrumenten waardoor Apple weet wat er gebeurt bij de beta-testers.

Vroeger moest je zuinig programmeren op een commandoor 64
Ik heb het gevoel, dat er tegenwoordig heel slordig wordt geprogrammeerd

Ook dat is absoluut waar. Waarom zou je tijd en energie steken als programmeur in het verder optimaliseren van de code, als je toch zeeën van ruimte hebt? Het blijft op deze manier voor een deel een wapenwedloop.

Profielfoto

bitsflew op 21 juni 2017

Die app size explosie komt voor een klein deel door gebruik van Swift (~30MB extra)

Resources ter ondersteuning van meerdere talen kunnen ook redelijk aantikken
Praktijk voorbeeld Facebook, elke taal voegt +/- 800KB toe

Maar de grootste bijdrage wordt meestal geleverd door images i.c.m. met steeds groter wordende schermen.

Daarnaast zijn er nog de vemijdbare oorzaken:

Het te snel grijpen naar een externe libraries (Cocoapods,Carthage), bijkomend probleem is dat die libraries weer dependies hebben naar andere libraries en die moet je dus ook mee bundelen.

PNG gebruiken waar JPEG voldoet.

En met de komst van Xcode9/iOS11:
Waar mogelijk vector based (PDF) images gebruiken.

Profielfoto

computer space op 21 juni 2017

Voor Facebook is het simpel:
browse gewoon naar mbasic.facebook.com
Beste FB experience, nagenoeg geen reclame, je kunt zelfs heel eenvoudig full-size foto’s bekijken, probeer dat eens in de responsive versie.
Ook is ie beresnel, en hangt ie eigenlijk nooit, iets wat de responsive versie ook doet. Dataverbruik is zelfs minder dan de App.
En voordeel: messenger en timeline in één plek.
Nadeel: FB vind het nodig je op iedere pagina op de app te wijzen.

Profielfoto

abbenhui op 25 juni 2017

@computer space: Dank. Ik kende dit adres niet; werkt als een speer!

 


Je kunt alleen reageren met een gratis OMT account.
Heb je geen OMT account? Registreer je dan nu gratis!

Inloggen

 

of Wachtwoord resetten?