Wat is programma -optimalisatie?

Optimalisatie van het programma is het proces van het wijzigen van een computerprogramma op een manier waardoor het programma sneller wordt uitgevoerd, minder bronnen verbruikt of over het algemeen werkt met een hoger niveau van efficiëntie. De taak van optimalisatie kan automatisch worden uitgevoerd door sommige programmeertaalcompilers, opzettelijk door een optimalisatieprogramma te gebruiken, of handmatig door programmeurs die door de broncode stappen en proberen specifieke verbeteringen aan te brengen. Over het algemeen wordt programma -optimalisatie uitgevoerd met een specifiek doel in gedachten, omdat er zeer weinig algemene optimalisaties zijn die kunnen worden gemaakt naar een programma dat op een of andere manier de geoptimaliseerde status van een ander deel van het programma niet verminderen, wat betekent dat een programma meestal kan worden geoptimaliseerd voor snelheid of resource -gebruik, maar meestal niet beide. Een complicatie die bij sommige soorten optimalisatie kan optreden, is dat veel programmeertalen op hoog niveau zo'n groot niveau van abstractie bieden tussen native code en de computertaal die optimalisatie kan zijnMoeilijk of onmogelijk te implementeren op alle platforms in alle situaties, vooral met geïnterpreteerde talen die just-in-time (JIT) compilatie gebruiken.

Een belangrijk concept in programma -optimalisatie is het idee dat een optimalisatie meestal een soort prijs heeft. Een voorbeeld hiervan is dat, wanneer een stuk code wordt geoptimaliseerd om sneller te werken, de toename van de snelheid kan komen voor de prijs van code -leesbaarheid, geheugengebruik, programmaflexibiliteit of een aantal andere kosten. Dit betekent dat programma -optimalisatie een gericht proces moet zijn, met de bedoeling om één aspect van een programma op een betere manier te laten werken terwijl ze bereid zijn de efficiëntie van andere aspecten op te offeren.

Verschillende soorten programma -optimalisatie kunnen worden uitgevoerd in verschillende stadia van programma -ontwikkeling. Tijdens het ontwerp kan brede optimalisatie worden gedaan door ervoor te zorgen dat een programma effectief lijkt te worden uitgevoerd. Bij het werkenG Met daadwerkelijke broncode kunnen optimalisaties zijn om ervoor te zorgen dat er geen externe opdrachten, repetitieve oproepen of slecht geschreven functies zijn. Bij compilatie worden veel optimalisaties automatisch uitgevoerd door de compiler en kunnen ze worden geleid door het gebruik van verschillende compilerschakelaars of richtlijnen door de programmeur.

Automatische optimalisaties, zoals kan optreden bij een compiler- of toewijding -optimalisatieprogramma, kunnen vaak trucs met zich meebrengen die te complex zijn om praktisch te zijn voor menselijke programmeurs. Dit kan het verplaatsen van instructies in een programma omvatten, zodat ze worden uitgevoerd vanuit de order die oorspronkelijk is geschreven, maar op een efficiëntere manier voor de processor. Het kan ook opzettelijk verschuivende bronnen zoals geheugenblokken omvatten, zodat ze sneller toegankelijk zijn. De meeste programma -optimalisatie vindt automatisch plaats op compiler niveau.

Een complicatie met herhaalde of agressieve programma -optimalisatie is dat, zodra een programma is aangepast om efficiënter te werken, het meestal meer wordt Difficult om te wijzigen voor andere doeleinden, zoals het toevoegen van functionaliteit of het repareren van bugs. Dit kan optreden wanneer optimalisaties beginnen met het vergrendelen van set -programmagedrag dat niet gemakkelijk kan worden gewijzigd of aangepast aan nieuwe code zonder dat alle optimalisaties ongedaan worden gemaakt. Een groter probleem is dat in veel gevallen een geoptimaliseerd programma minder door mensen leesbaar wordt, omdat trucs en snelkoppelingen worden gebruikt in plaats van alleen beknopte opdrachten en klassieke controlestructuren. Om deze redenen is er vaak een niveau van programma -optimalisatie waarop het acceptabel is om te stoppen, hoewel drastische codemodificaties een programma iets efficiënter kunnen laten werken.

ANDERE TALEN