19 januari 2011

Performance in computing, snel versus slank

Als je programmeert is je eerste beslommering dat je programma doet wat het moet doen. Als het twee rijen getallen moet optellen, moet het niet een andere bewerking daarop loslaten. En de optelling moet correct zijn.
Daarna (pas) is de performance van belang, waarbij meestal, of eigenlijk voornamelijk, aan de snelheid wordt gedacht.
Ik wil aantonen dat voor de beoordeling van (de kwaliteit van) een algoritme het geheugenbeslag, de zgn. 'footprint' van (veel) groter belang is.

De snelheid van (de uitvoering van) een proces is van veel factoren afhankelijk. Allereerst natuurlijk van het algoritme. Een in wezen traag algoritme zal nooit snel kunnen worden uitgevoerd.
Maar dan zijn er een groot scala van andere, vooral omgevingsomstandigheden van belang. Wordt de programmeertaal gecompileerd of geïnterpreteerd? Hoe modern is de processor en wat is de kloksnelheid? Kan het proces multithreaded worden uitgevoerd of niet? Is er überhaupt sprake van parallelle processing? Kan het eventueel draaien op een videokaartprocessor? En, in de (nabije?) toekomst, draait het op een quantumcomputer?
Allemaal vragen die direct van invloed zijn op de snelheid en daarmee de (doorloop)tijd van een proces.
Waarbij nog komt dat we aan tijd geen gebrek hebben. Of het proces nu binnen één seconde loopt of er weken over doet, dat kost niets meer.

Het geheugenbeslag is van een heel andere orde. Om met het laatste te beginnen, willen we een groter geheugen hebben, dan zullen we in de buidel moeten tasten, maar zelfs als we héél diepe zakken hebben, een computer heeft slechts beperkte ruimte voor geheugen.
Daarbij komt dat het algoritme bepalend is voor de hoeveelheid geheugen die vereist is. Dan maakt compileren of interpreteren niet meer uit, ja zelfs een quantumprocessor zal daar rekening mee moeten houden. Want vanzelfsprekend zal een proces dat veel geheugen vereist meer gesleep met gegevens met zich meebrengen, en daarmee trager zijn, dan een slank proces.

Uiteraard zal vrijwel altijd snelheid van groter belang blijven, maar het ontwerp van het algoritme moet meer op het geheugenbeslag gericht zijn. En voor de snelheid moeten we dan de juiste andere factoren kiezen. Dan krijgen we een optimale oplossing.

15 januari 2011

Geruststellen

Soms hebben mensen er last van als een ander niet attent is tegen hen, onaardig doet of zich zelfs onheus gedraagt. Die mensen hebben dan het idee dat zij iets doen waardoor ze bij die ander dat gedrag oproepen, waardoor zij er dus de oorzaak van, om niet te zeggen verantwoordelijk voor zijn.
Laatst heb ik iemand op andere gedachten kunnen brengen door op te merken dat die ander waarschijnlijk zo in elkaar zit, bij iedereen zich zo onaangenaam gedraagt, zonder aanziens des persoons. Dus daarmee is er van verantwoordelijkheid, laat staan schuld, geen sprake is.
Dat bleek zó'n geruststellende gedachte voor haar te zijn dat ze onlangs nog eens noemde hoe goed dat haar had gedaan.

9 januari 2011

Visie

Kocht gisteren weer eens een krant. In de bijlage, NRC weekblad, het verhaal van Lorella Zanardo. Daarin een prachtig voorbeeld van haar over visie, ook al noemt ze dat niet.

"Ik vertel op school altijd over hertog Visconti van Milaan. 
Die riep in 1500 een architect bij zich en zei: ‘Ik wil een Dom maken.’ De architect kwam, liet een tekening zien en zei: ‘Dit is de Dom, hij wordt heel mooi.’
‘Hoe lang duurt het om hem te bouwen,’ vroeg Visconti. ‘Vijfhonderd jaar,’ antwoordde de architect. ‘Prima,’ zei Visconti. Hij zette zijn handtekening en de architect begon. 
Visconti stierf en heeft enkel de fundamenten gezien en een zuil van de kerk."