IT- och managementkonsultbolaget Consid lanserade i oktober en programmeringstävling med syfte att ta reda på vilket svenskt universitet som utbildar de smartaste utvecklarna – och premiera vinnaren i tävlingen med en resa till USA:s tech-mekka, Silicon Valley.
Peter Hillerström, student vid Chalmers University of Technology, visade sig leverera det bästa tävlingsbidraget.
Chalmers University of Technology kan klappa sig själva lite extra på axeln när det står klart att Peter Hillerström som studerar sitt sista år på Chalmers var den som på bästa sätt löste den uppgift som IT- och managementkonsultbolaget Consid nyligen utlyste i en programmeringstävling. Peter premieras med en resa till USA:s tech-mekka, Silicon Valley, som vinst.
Tävlingen som Consid annonserade gick ut på att utifrån en fil med 6 miljoner registreringsnummer skriva ett program som avgör huruvida det finns några duplicerade registreringsnummer eller inte – snabbast programmet vinner.
Henrik Sandell, kontorsansvarig för Consid i Stockholm tillika den som står bakom programmeringsuppgiften, menar att uppgiften inte var en lätt nöt att knäcka:
– Det här är en uppgift som vid första anblick verkar mycket enkel, och när man analyserar den så inser man att det finns möjligheter att göra en riktigt snabb lösning.
Peter utnyttjar möjligheterna i C++ och trådning för att lösa uppgiften snabbt. Han har också hanterat de problem som finns för konflikter vid trådning på ett elegant och effektivt sätt vilket tyder på en mycket god förståelse för trådning.
Q&A med vinnaren, Peter Hillerström, student vid Chalmers University of Technology
Grattis till vinsten! Hur känns det?
– Det känns väldigt bra, jag väntade mig inte att vinna tävlingen! Jag var aldrig helt nöjd med bland annat trådningen i min lösning, så jag trodde att någon skulle göra något smartare än mig.
Vad gjorde du för att vinna tävlingen?
Den optimala algoritmen är enkel. Det finns totalt 17 576 000 möjliga registreringsnummer. Om man tilldelar varje nummer exakt en bit minne, som avgör om numret finns i filen eller inte, så får man en ca 2 MiB stor tabell som är relativt liten och kompakt. Algoritmen går sedan ut på att gå igenom filen, uppdatera tabellen och kolla om en kopia upptäckts. Att räkna ut ett nummers bitposition går snabbt med lite enkel aritmetik, vilket innebär att den största flaskhalsen är hur man läser in filen till minnet. Det som gjorde mitt program så snabbt var att jag använde Windows API:t för att mappa in filen direkt i processens minne, och sedan accessa den som om den vore vanligt minne.
Betyder detta att det är Chalmers University of Technology som har den smartaste utvecklaren hos sig?
Det är lite lockande att påstå det (skratt). Men nej, jag är en specialiserad utvecklare. Jag är bra på datorgrafik, GPU kod, lågnivå kod och att mikrooptimera i allmänhet. Skulle du exempelvis be mig designa ett stort webbsideprojekt hade jag inte haft någon aning om var jag ens skulle börja. Jag gillar att vara nära hårdvaran.
Vem planerar du att ta med på din resa till Silicon Valley?
Förhoppningsvis borde jag kunna åka dit med ett kompisgäng, men inget är bestämt än.