[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