5 tecniche di ottimizzazione del codice per velocizzare i tuoi programmi |  di Nicholas Obert |  Novembre 2023

 | Intelligenza-Artificiale

Rendi il tuo codice più efficiente e professionale con questi metodi indipendenti dal linguaggio

fotografato da Shubham Dhage SU Unsplash

Prima fallo funzionare, poi fallo velocemente. Questo è un principio comune seguito da molti programmatori professionisti. Inizialmente, puoi scrivere il codice utilizzando l’approccio che sembra più intuitivo per risparmiare tempo di sviluppo sulla bozza. Dopo aver ottenuto un’implementazione funzionante, potresti voler ottimizzarla scegliendo attentamente quali tecniche di struttura dati funzionano meglio nel tuo caso specifico.

In questo articolo esploreremo cinque metodi indipendenti dal linguaggio che puoi utilizzare per migliorare il runtime del codice. I seguenti concetti sono generici e possono essere applicati a qualsiasi linguaggio di programmazione.

Estrazione invariante di ciclo

Considera il seguente codice Python che controlla un elenco di stringhe rispetto a un’espressione regolare per trovare tutte le corrispondenze:

import regex as re

# Get some strings as input
strings = get_strings()
# List to store all the matches
matches = ()

# Iterate over the input strings
for string in strings:

# Compile the regex
rex = re.compile(r'(a-z)+')

# Check the string against the regex
matches = rex.findall(string)

# Finally, append the matches to the list
matches.extend(matches)

I cicli applicano ripetutamente una serie di istruzioni a un input variabile. Tenendo presente questo, riesci a individuare qualche operazione che non cambia nel codice sopra?

L’affermazione `rex = re.compile(r’(a-z)+’)` opera su un input costante: la stringa regex. Per ogni iterazione del ciclo, questa istruzione fa esattamente la stessa cosa, indipendentemente dall’input del ciclo. Se dovessimo estrarre questa istruzione invariante e eseguirla una volta prima del ciclo, il codice avrebbe comunque lo stesso comportamento generale risparmiando alcuni cicli della CPU.

import regex as re

# Get some strings as input
strings = get_strings()
# List to store all the matches
matches = ()

# Compile the regex only once before the loop
rex = re.compile(r'(a-z)+')

# Iterate over the input strings
for string in strings:

# Check the string against the regex
matches = rex.findall(string)

# Finally, append the matches to the list
matches.extend(matches)

Fonte: towardsdatascience.com

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *