[Generale] Re: [Tecnica] Perl e strutture dati multidimensionali

Szymon Stefanek pragma a siena.linux.it
Gio 23 Nov 2006 02:31:41 GMT


On Thursday 23 November 2006 03:18, Yusef Maali wrote:

> Devo ancora capire se sei semplicemente un genio, oppure un genio pazzo :P

Macchè genio.. io sono malato :D

Che poi, ora, preso dalla mania dell'onnipotenza, vaneggio del tutto...
Non mi ascoltate :D

> L'algoritmo che pensa alla matrice è il seguente:
>
> 	for(int i=0;i<100;i++)
> 	{
> 		for(int j=0;j<100;j++)
> 		{
> 			immagine[i][j] = (immagine[i][j] * 11) / 10;
> 		}
> 	}
>
> L'algoritmo che pensa all'array lineare è il seguente
>
> 	unsigned char * p = immagine;
> 	unsigned char * fine = p + (100 * 100);
> 	while(p < fine)
> 	{
> 		*p = (*p * 11) / 10;
> 		p++;
> 	}
>
> Nota che il primo algoritmo usa due indici e fa 10% di confronti ed
> incrementi in più (è dimostrabile).

Il primo algoritmo, ad ogni passo, è costretto a calcolare la posizione 
dell'elemento indicizzado da i e j tramite la formula i*10+j.
Nell'architettura ix86 (e probabilmente in tutte le altre) le istruzioni
sono studiate per minimizzare il costo di questo conto, ma anche
se si potesse fare con una singola istruzione, questa userebbe sicuramente
molta più logica di un semplice incremento (usato nell'algoritmo 2).

Questo significa che l'algoritmo senza puntatori non solo ci mette di più
ad eseguire ma consuma pure un botto di corrente in più...

I puntatori sono "verdi": "save the planet, use pointers, use C(++)".

Vabbeh.. vado a letto eh :D


-- 

Szymon Stefanek

------------------------------------------------------------------------------
-
- The brighter you are the more you have to learn.
-
------------------------------------------------------------------------------
-------------- parte successiva --------------
Un allegato non testuale è stato rimosso....
Nome:        non disponibile
Tipo:        application/pgp-signature
Dimensione:  189 bytes
Descrizione: non disponibile
Url:         http://liste.siena.linux.it/pipermail/generale/attachments/20061123/d8b64e62/attachment.pgp


Maggiori informazioni sulla lista Generale