Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Ottimizzazione Codice
Forum - C/C++ - Ottimizzazione Codice

Avatar
Peppe91 (Member)
Rookie


Messaggi: 41
Iscritto: 09/04/2011

Segnala al moderatore
Postato alle 11:14
Sabato, 16/04/2011
Salve a tutti ragazzi!
Vorrei chiedervi un consiglio. Sto provando ad ottimizzare un algoritmo che trova un determinato pattern (sottostringa) in un testo e lo elimina (ESEMPIO: nel mezzo del cammin di nostra vita è il testo è voglio eliminare tutte le occorrenze del pattern "ita". Adesso però voglio ottimizzarlo in modo che i blocchi di memoria vengano spostati il minor numero di volte possibile. Ecco il codice. Le variabili dichiarate sono:
Codice sorgente - presumibilmente C++

  1. char *testo, *pattern, *te, *ch, *dest, *src
  2. short lunghezza_testo, lunghezza_pattern, numero_byte=0
  3.  
  4. lunghezza_testo=strlen(testo);
  5. lunghezza_pattern=strlen(pattern);
  6.  te=testo;
  7. do
  8.     {
  9.         ch=strstr(te,pattern);
  10.         if (ch!=0)
  11.         {
  12.             corrispondenza++;
  13.             src=ch+lunghezza_pattern;
  14.             dest=ch;
  15.             numero_byte=lunghezza_testo-(int)(ch-testo);
  16.             memmove(dest,src,numero_byte);
  17.             te=ch;
  18.             lunghezza_testo=lunghezza_testo-lunghezza_pattern;
  19.         }
  20.     }
  21.     while (te<testo+lunghezza_testo-lunghezza_pattern+1 && ch!=0);
  22.     realloc(testo,lunghezza_testo);
  23.     free(testo);


Ultima modifica effettuata da Il Totem il 16/04/2011 alle 11:42
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 11:55
Sabato, 16/04/2011
Sposti già il minor numero di blocchi. Se ci sono n occorrenze della sottostringa, dovrai spostare n blocchi, e non di meno. Non c'è modo di ridurre questo numero.

PM Quote