Permalänk

Hur viktigt är kompakt kod?

Visste inte riktigt hur jag skulle formulera rubriken men min tanke kommer ifrån att jag använder en tråd för att simulera en timer i en Android app jag bygger och i den tråden har jag bland annat ett if-else statement där i det kallas på andra metoder som också har if else statements. Min fråga är alltså kommer detta någonsin att påverka preseterandet av applicationen på en av dagens mobiler?

Permalänk
Medlem
Skrivet av MaskenLilja:

Visste inte riktigt hur jag skulle formulera rubriken men min tanke kommer ifrån att jag använder en tråd för att simulera en timer i en Android app jag bygger och i den tråden har jag bland annat ett if-else statement där i det kallas på andra metoder som också har if else statements. Min fråga är alltså kommer detta någonsin att påverka preseterandet av applicationen på en av dagens mobiler?

Det beror ju helt på vad de andra funktionerna gör.
Varje statement kostar ju CPU-tid, men oftast är det externa calls eller tunga beräkningar som tar tid, inte if/else i sig.

Permalänk
Medlem

Det bästa du kan göra är att testa prestandan på hårdvara och se om din applikation är snabb nog. Är den inte snabb nog, använd en profiler och se vad som tar mest tid i din kod.

Visa signatur

Arch | 1440p 165Hz IPS | 7800X3D | 1080ti | 64GB@6GHz | SN850 2TB

Permalänk
Medlem

Skulle säga att det inte kommer märkas av prestandamässigt på dagens mobiler av det du beskriver. Som någon annan skrev, använd en profiler för att mäta av hur CPU-användningen ser ut när du testar din app, det finns en funktion för det i Android Studio. Kolla upp hur man använder den på t.ex. Youtube.

Permalänk
Medlem

Beror ju helt på hur många gånger du passerar just det kodsegmentet. Är det högre upp så spelar det inte någon roll, likaså om du bara mäter tiden några få gånger. Om du hamrar den 100 tusentals gånger så bör du kanske tänka mera på det. Troligen kostar funktionsanropen mer än if-satsen om du bara passerar igenom utan några loopar.

Igår såg jag denna YT-video som presenterar en ny datumfunktion i .net7 och linuxkärnan. Den är nästan fyra gånger snabbare än .net6-koden.

Cassio Neri - https://www.youtube.com/watch?v=J9KijLyP-yg
5:30 Diskussion och benchmarking av äldre datumfunktioner.
18:15 Hur man kan hjälpa branch prediktorn, 3x snabbare skottårs-beräkning.

Permalänk
Avstängd

Det är ju inte hur kompakt koden är utan vilka instruktioner den resulterar i som spelar roll.

Permalänk
Hedersmedlem
Skrivet av sweborn:

Det är ju inte hur kompakt koden är utan vilka instruktioner den resulterar i som spelar roll.

Om man försöker göra smarta saker finns det också risk för att kompilatorn inte vågar göra ännu bättre optimeringar.

Permalänk
Medlem
Skrivet av MaskenLilja:

Visste inte riktigt hur jag skulle formulera rubriken men min tanke kommer ifrån att jag använder en tråd för att simulera en timer i en Android app jag bygger och i den tråden har jag bland annat ett if-else statement där i det kallas på andra metoder som också har if else statements. Min fråga är alltså kommer detta någonsin att påverka preseterandet av applicationen på en av dagens mobiler?

Inte alls. För det mesta. Optimera för läsbarhet över allt annat. Programmerare läser betydligt mycket mer kod än dem skriver. Dessutom vill man inte heller att folk som kommer efter en ska behöva läsa typteori eller tvåhundra sidor dokumentation om ett ramverk innan dem förstår vad som sker.

Visa signatur

Ingen part kan vinna eller förlora en diskussion, då en diskussion är för gruppens gemensamma utveckling kring ett ämne.
►Jag förbehåller mig rätten att ha helt upp åt väggarna fel◄

Permalänk
Medlem
Skrivet av sweborn:

Det är ju inte hur kompakt koden är utan vilka instruktioner den resulterar i som spelar roll.

Det som spelar stor roll är om koden får plats i processorns cache eller ej. Detta då det tar mycket längre tid att läsa/skriva mot det yttre minnet än från cachen. Så det kan löna sig att lägga till fler instruktioner om man kan minska accesser till minne utanför cache.

I TS fall tror jag dock inte man märker någon skillnad.

Permalänk
Medlem

Som andra har nämnt så är det inte antal rader som spelar någon större roll utan instruktionerna.
Alla moderna kompilatorer kommer inte ha större problem att ta ev överflöd av rader och bryta ner dem till deras enklaste beståndsdelar så att programmet kör så snabbt som möjligt.

Däremot kan det finnas andra fördelar med att ha kompakt kod så om läsligthet och underhåll. Dock ska man inte heller gå för långt med att försöka uppnå så kort kod som möjligt då det ofta blir svårare att läsa.

Jag hade istället försökt fokusera på att skriva kod som är lätt att förstå, det kommer gynna dig mer.