Skip to content
🇺🇦 Auta ukrainalaisia tekemällä lahjoitus UNICEFin tai Suomen Punaisen Ristin kautta. 🇺🇦

Miksi ohjelmistosi toimii tehottomasti? Osa 1: Koodi

Energiatehokkuuden blogisarjan tämänkertainen kirjoitus pureutuu käytännön kokemuksiimme siitä, millaisia tehottomuuden lähteitä ohjelmistojen koodien auditoinneissa on tyypillisesti löytynyt.

Mitä sieltä koodista sitten löytyy?

Koodaustyössä on viime vuosina ollut tyypillistä, että kun uusi ominaisuus on todettu toimivaksi, on siirrytty suoraan seuraavan ominaisuuden pariin, eikä suorituskyvyn hiomiseen ole käytetty aikaa. Auditoinneissa perehdymme järjestelmään kooditasolla, ja kartoitamme tärkeimpiä suorituskykyyn liittyviä kohtia ja haasteita. Osaksi tässä auttavat haastattelut, mutta myös auditoijien oma laaja kokemus ohjelmoinnista ja suorituskykytestaamisesta erilaisista ohjelmistoprojekteista, sekä tietysti #AtoZtyypeille kumuloitunut tietopankki parhaista käytänteistä.

Energiatehokkuuden kannalta erityisen kiinnostavia ovat usein toistuvat, paljon prosessoria ja/tai muistia käyttävät operaatiot ja niiden toteutus, esimerkiksi suurten datamäärien lataaminen ja läpikäyminen, erilaiset laskennat ja haut. Joskus myös ns. peruskäyttö aiheuttaa paljon enemmän ja useampia kutsuja taustajärjestelmään ja tietokantaan kuin mitä olisi toiminnan suhteen välttämätöntä.

Erilaisten työkalujen avulla pystymme selvittämään että mitkä kohdat koodissa söivät eniten prosessoriaikaa, ja näemme miten käyttäjän tekemät kutsut liikkuvat järjestelmän sisällä. Pilviympäristössä toimiviin järjestelmiin asennamme mittarit joilla seuraamme palvelinkuluja sekä CO2e-päästöjä päivätasolla. Kaikkia näitä keinoja ja työkaluja yhdistämällä saamme kattavan kuvan järjestelmän toiminnasta ja tehokkuuden kannalta oleellisimmista parannuskeinoista.

walkator-klMii3cR9iI-unsplash-small-1

Kuvituskuva: Walkator (Unsplash)

Esimerkkejä koodilöydöksistä

  • Kun käyttäjä lataa web-järjestelmästä raportin, laskentaa ei tehdä palvelimella vaan päätelaitteessa. Seurauksena käyttäjän selain menee jumiin kymmenien sekuntien ajaksi. Parempi ratkaisu olisi tehdä raportti keskitetysti palvelimella ja tarjota tuotoksesta linkki käyttäjälle.
  • Tietomassaa loopataan läpi uudestaan ja uudestaan erilaisia tietoja etsien, vaikka yksi läpikäynti riittäisi.
  • Palvelimelta haetaan kutsulla iso tietomassa eikä vain sitä mitä todella tarvitaan.
  • Käytössä on pilviresursseja ja -palveluja jotka eivät ole toiminnan kannalta välttämättömiä.
  • …ja paljon muuta.

Auditoinnin jälkeen

Energiatehokkuusauditoinnin jälkeen tunnet paremmin järjestelmäsi kooditasolla, ja tiedät kustannustehokkaimmat parannuskeinot. Tekemällä suosittelemamme optimointi- ja parannustoimenpiteet, koodisi laatu sekä ylläpidettävyys paranevat ja päästöt sekä kulut pienenevät.

Auditointi ei kuitenkaan rajoitu pelkästään koodin tutkimiseen, sillä tehokkuuden kannalta merkitystä on myös prosesseilla ja käytettävyydellä, koska nekin usein aiheuttavat tehottomuutta. Seuraavassa blogisarjan osassa keskitytäänkin nimenomaan UX- ja prosessiasioihin sekä niiden rooliin tehokkuuden näkökulmasta.