Microsofti insenerid pakkisid vanasti koodi kokku, et säästa väärtuslikke baite

Microsofti veteraninsener Raymond Chen meenutas esmaspäeval Windowsi hiilgeaegu, mil arendajad hoolisid jõudlusest ja mälukasutusest. Ta kirjeldas juhtumit, kui üks meeskond töötas nimetu protsessori jaoks mõeldud x86-32 emulaatori kallal, mis kasutas binaarset tõlkimist – originaalsest x86-32 koodist genereeriti natiivkood. Chen võrdles seda JIT-kompilaatoriga, kus x86-32 toimib justkui baitkoodina.

Meeskond avastas funktsiooni, mis pidi eraldama 64 KB mälu. Tavapärane lahendus oleks olnud kontrollida mälu olemasolu, lahutada pinukursorist 65 536 ja initsialiseerida mälu tsüklis. Kompilaator oli aga koodi optimeerinud, kerides tsükli lahti 65 536 üksikuks baidikirjutamise käsuks, igaüks 4 baiti pikk. Tulemuseks oli, et 64 KB andmete initsialiseerimiseks kulus 256 KB koodi.

Chen sõnul solvas see leid meeskonda niivõrd, et nad lisasid tõlkijasse erikoodi, mis tuvastas selle funktsiooni ja asendas selle samaväärse kompaktse tsükliga. Lugu meenutab aega, mil inseneridel oli oluline iga bait kokku hoida – vastupidiselt tänapäeva tarkvarale, mis sageli mäluefektiivsusele suurt tähelepanu ei pööra.

Loe täispikka artiklit: The Register

Lisa kommentaar