Optimaliseren

We optimaliseren uw programmatuur zodat u sneller kunt rekenen of grotere sommen kunt draaien. Dat doen we door slimmere algoritmen toe te passen of op een handigere manier te programmeren. Een verdubbeling van de performance is vrijwel altijd haalbaar. Maar meestal bereiken we veel meer.

Optimaliseren kent veel verschillende aspecten

Onze softwareontwikkelaars zijn bedreven in alle aspecten van optimalisatie. Hieronder vindt u een overzicht van de diverse aspecten waar we ons op richten.

Performance analyse

We analyseren welk deel de meeste rekentijd kost of waar het geheugengebruik een bottleneck vormt. Daarbij maken we waar mogelijk gebruik van standaard performance analyse tools. Maar vaak leveren deze tools niet de gezochte informatie. Dan maken we gebruik van tools en methoden die we zelf in de loop van de jaren ontwikkeld hebben. Daarnaast helpt het dat we al heel veel programmatuur gezien hebben waardoor we meestal snel een vermoeden hebben van waar de problemen zitten.

Het versnellen van software

We kunnen de rekentijd vaak flink verkorten door nog eens goed na te denken over de rekenmethode. Een slimmer algoritme of een andere wiskundige benadering maakt soms een enorm verschil. Daarnaast kan de efficiëntie van de programmatuur zelf in veel gevallen ook verhoogd worden. Bijvoorbeeld door het rekenintensieve gedeelte af te stemmen op specifieke hardware, of door juist een generieke bibliotheek te gebruiken die al vergaand geoptimaliseerd is.

Het reduceren van het geheugengebruik

Het geheugengebruik kan soms flink teruggedrongen worden door goed te kijken welke gegevens persé in het geheugen moeten zijn en daar efficiënte datastructuren bij te bedenken. Daarnaast kan het gebruik van een andere rekenmethode helpen om het geheugengebruik te verminderen of het cachegebruik te verbeteren. Ook hier geldt weer: we hebben inmiddels zoveel grootschalige rekenprogrammatuur gezien dat we kunnen putten uit een grote gereedschapskist van creatieve oplossingen.

Parallellisatie

Hoewel processoren geen hogere kloksnelheden meer bereiken, worden ze nog wel steeds krachtiger in termen van vectoroperaties en multicoreberekeningen. Slim gebruik van moderne hardware kan dus een flinke versnelling opleveren maar vereist wel de nodige aanpassingen aan de software. Door het probleem in stukken op te delen kunnen alle rekenkernen effectief ingezet worden en wordt de rekentijd aanmerkelijk verkort. Als het nog sneller moet dan komen GPU’s, rekenclusters of cloud-omgevingen in beeld. Daarin zijn soms duizenden processoren of rekenkernen beschikbaar. Het programmeren voor dit soort systemen is een vak apart. Bij VORtech is ruimte kennis en ervaring aanwezig op het gebied van High Performance Computing (HPC).

Het borgen van correctheid

Bij het versnellen van software is het belangrijk om er 100% zeker van te zijn dat de functionaliteit niet wijzigt. Om correctheid van de berekeningen te borgen is een uitgebreide testbank essentieel. Vaak is het nodig om bij het opzetten van de testen voldoende kennis te hebben van zowel de onderliggende algoritmen als van de toepassing. Het ontwikkelen van de testbank is dan ook vaak een gezamenlijke taak van onze ontwikkelaars en de experts van de klant.

Onderhoudbare code

Door alle functionaliteit te documenteren zorgen we ervoor dat uw eigen softwareontwikkelaars nog steeds de weg in de programmatuur kunnen vinden.
Programmatuur die geweldig presteert maar niet onderhoudbaar is, zal snel een probleem gaan vormen. Wij zorgen ervoor dat de leesbaarheid en onderhoudbaarheid van uw software niet wordt aangetast.

Meer weten?

U kunt meer lezen over onze kennis en ervaring in onze blog. Als u vrijblijvend eens wilt sparren over de mogelijkheid om uw programmatuur te optimaliseren, neem dan gerust contact met ons op.

Geïnteresseerd?
Als u denkt dat onze ontwikkelaars iets voor u kunnen betekenen, neem dan gerust contact met ons op voor een vrijblijvend kennismakingsgesprek.
Neem contact op