Newsgroup: it.comp.os.win.xp
Titolo: Win XP Sp2....funziona bene, ma...

...alla chiusura ci impiega un' eternità...
A dire il vero, anche alla partenza, impiega
alcuni minuti per caricare Antivir e Connessione alice
in automatico...
Ora, l'hd è un vecchio Samsung che tra 2 giorni
sostituirò con un nuovo, più veloce, certamente,
ma mi chiedevo se esistesse qualche metodo per
eliminare elementi inutili che window carica
all'avvio e soprattutto, se c'è un modo x
farlo chiudere più velocemente, anche in questo
caso, impiega un paio di minuti...
Il defrag non ha aiutato più di quanto sperassi,
proverò un programma alternativo a Diskeeper
a proposito, cosa mi consigliate ?
Insomma, se avete qualche
consiglio da darmi, ve ne sarei molto
grato.
Dimenticavo; La configurazione
Attuale è
Win Xp sp2 1gb ram
Athlon Xp 3200
1 hd 20 gb Samsung
1hd 160 Gb Maxtor
Quando arriveranno i due hd da 160 gb farò un raid
del disco d, il disco di sistema diventerà il maxtor
da 160 gb, magari lo partizionerò e toglierò
il samsung che ha fatto bene il suo lavoro...
Il sistema è installato da quasi due anni,
sempre tenuto sotto controllo, patch di
aggiornamenti frequenti, file di registro sempre
puliti, pulizia dei cookies la faccio spesso...
la deframmentazione almeno una volta al
mese...ecc,ecc...
Insomma, mi date qualche consiglio ?
Grazie.
Lallo© 

Scommettiamo che se formatti e reinstalli ti si spegne in un lampo? :-)
Dopo un bel po' di tempo ( e 2 anni lo sono se l'utilizzo č intensivo), 
formattare č normale...non c'č utility o tool che tenga, funziona tutto 
bene, il sistema č stabile, perň non tutto finzia piů come all'inizio....
Io ho sempre fatto cosě...ed ho sempre risolto...
E. 

 E.
...forse è un po troppo pretenzioso per le mie
capacità, ma prima di formattare, vorrei capire perchè
accade questo e che possibilità esistono per ovviare
il problema... cmq, perchè accade questo ?
Sono Affezionato a questa configurazione,
mi dispiacerebbe formattare....
...uffa...
--
Lallo© 

 il problema... cmq, perchè accade questo ?
Regolarmente questi post finiscono come un thriller, mi appassiono, perchè 
interessa anche me capire perchè, con il tempo, Windows rallenta le sue 
prestazioni.
Possibile che nessuno sappia rispondere tecnicamente cosa succede ?
Formattare è una soluzione troppo drastica, credo debbano esistere soluzioni 
più raffinate.
Ciao
Michele 

 soluzioni piů raffinate.
Vabbč, ma dai, č fisiologico....
In due anni ti capita:
- Di aggiornare le varie versioni di software "n" volte (magari non sono 
tutti software "intelligenti" che fanno update, ma devi disinstallare e 
reinstallare)
- Di aggiornare drivers
- Di installare qualche demo di qualche giochino (dai su, č fisiologico 
anche per i non smanettoni)
- Capita che per svariati motivi, qualche disinstallazione o aggiornamento 
non vada completamente a buon fine
- Ti accorgi che hai dei software installati, che non usi mai ma proprio 
mai, e allora decidi di levarli: il giorno dopo ti chiama quel parente o 
amico che ha bisogno di un aiuto, esattamente col programma che hai levato 
il giorno prima (a me č capitato anche questo).
 - Secondo me, vuoi pulendo la cache, i cookies, e quant'altro, Internet 
lascia comunque dei residui negativi nascosti....
Detto questo, č normale che dopo due anni il registro di sistema sia ben 
diverso dall'inizio!
A quel punto la macchina magari impiega di piů a spegnersi, oppure un 
software diventa un pelo piů instabile...e piccoli problemucci del genere...
E' vero che ci sono tool di ogni tipo per il registro e per "ottimizzare" la 
macchina, ma fare un'installazione ex novo č ben diverso.
Quello che devo ammettere, č che mediamente XP secondo me va benissimo 
(nonostante abbia un sacco di gente che spara a zero), e che l'"intervallo" 
dopo il quale č comunque cosa "sana" formattare, si č allungato enormemente, 
rispetto a Win98, dove a volte bastava anche un erroruccio stupido (appunto 
una disinstallazione riuscita male) per compromettere pesantemente o 
addirittura bloccare completamente il sistema.
Anche quelli che hanno Mac OS e Linux ogni tanto formattano....loro dicono 
di no...ma č cosě, fidati...ne conosco tanti.
E.

 ha scritto nel
messaggio news:438c124a$0$27608$4faf...@reader1.news.tin.it...


 Vabbè, ma dai, è fisiologico....
è fisiologico sui sistemi windows.
-- 
/Ely/ 
(> ICQ 23839420 <) (> AIM ElySwiss <)
New happy Apple User since 23 june 2004

 Possibile che nessuno sappia rispondere tecnicamente cosa succede ?
Succede che quella vaccata immonda del registro di sistema di ingrossa
come un fiume in piena, e a ogni avvio windows deve caricarlo, anche se
dentro ci sono riferimenti non più necessari, 
p.es
. a programmi  già
disinstalalti, hardware già rimosso etc etc


 ha scritto nel messaggio
news:438b9cf4$0$13260$4faf...@reader2.news.tin.it...

i continui aggiornamenti ingigantiscono il file di registro che il più delle
volte perde un sacco di tempo a cercare le cazzate più inutili o i resti di
vecchi programmi installati e mai rimossi completamente. Buona norma sarebbe
fare un save di questo file all'inizio e poi conservarselo gelosamente per
poterlo magare sostituire quando sarà diventato di dimensioni mostruose.
Esiste un programma shareware che ripara detto file  RegistryMechanic 5.0 .
enio

 
Allora intendi dire che programmi seri, tipo CCleaner & Regcleaner NON 
servono a niente??
-- 
Pino ( vecchio e disincantato )
L'unico modo per liberarsi da una tentazione è cedervi.

 servono a niente??
a niente magari no, qualcosa fanno, ma il registro è e rimane una
vaccata immonda (cit.).


 
Registro lindo da vaccate (secondo varie utility di cui ne citi 2) 
peccato che sia lento comunque. Anzi mooooooooooolto lento. Non so per 
quale motivo, ha iniziato ad essere lento da un giorno all'altro e con 
ben 3GB di ram installati. Pensavo fosse la ram, ma dopo un lunghissimo 
test, tutto a posto, la ram è OK, ma win no. Stesso problema, stessa 
lentezza sia all'avvio che alla chiusura. Nessun virus, worm o schifezze 
del genere. Sullo stesso sistema è installato anche il pinguino, che 
come ovvio vola (e ci credo con tutta quella ram). Anche win andava 
bene, non so perchè ora fa così. Possibile che da un giorno all'altro 
uno si ritrova con il PC lumaca?
-- 
Scream - SORRIDI! :) Domani sarà peggio...

 mi dispiacerebbe formattare....
A volte però è il male minore, dopo esserti messo al sicuro i dati.
Magari ad installazione completata, compresi SW che usi certamente (Office, 
un sw di fotoritocco...) e tutte le patch di win fino alle ultime,non 
guasterebbe un'immagine di sistema con Ghost o simili.
Così, la volta successiva che devi reinstallare, te la cavi in pochi minuti.
Andrea. 

 Così, la volta successiva che devi reinstallare, te la cavi in pochi minuti.
Beh non è detto... esistono sempre aggiornamenti
Esempio installo solo Win + patch + suite office (io metto openoffice, 
ma è uguale)
Uso anche altro software, ma supponiamo di salvare l'immagine solo a 
questo punto.
Ripristino tra sei mesi e magari nei sei mesi è uscita una suite office 
nuova o una nuova release che mi piace. Devo disinstallare e 
reinstallare la suite + tutti gli altri sw che già comunque dopo 
l'immagine avevo installato.
Se installo solo win + le patch e faccio l'immagine potrebbe andare, ma 
risparmierei un'ora circa, sinceramente non so se ne vale la pena.
Stesso discorso per driver ecc... tra sei mesi ci saranno sicuramente 
driver aggiornati quindi devo rimuovere i vecchi e reinstallarli. 
L'immagine secondo me è utile fino ad un certo punto.


 L'immagine secondo me è utile fino ad un certo punto.
Stra-quoto al 100%
E. 

 Possibile che nessuno sappia rispondere tecnicamente cosa succede ?
...XP è una merda!!!
Ciao :) 

> ...XP è una merda!!!
Il solito post inutile, qualunquista e soprattutto FALSO.
Secondo me XP Pro è un ottimo sistema operativo, perchè mediamente funziona 
benissimo.
E. 

 ha scritto nel 
messaggio news:438d607c$0$7314$4faf...@reader4.news.tin.it...

Fermo restando che io Odio A priori I prodotti
Microsoft, fermo restando che Xp assorbe troppe
risorse, devo ammettere che da quando l'ho installato,
non mi si è quasi mai bloccato...
..chissà che quegli zozzoni della M$ finalmente
non riescano a tirar fuori u S.O. Decente...
--
Lallo© 

 non riescano a tirar fuori u S.O. Decente...
Giusto, diciamolo invece chiaro che Xp Sp2 va proprio bene.
Caso mai si può dire cha fa venire l'orticaria allergica il 
funzionamento di Internet Explorer e i suoi popup, il meccanismo 
pesantissimo e lobbistico dei DRM, l'invadenza dei cookies e il 
meccanismo da ghestapo di index.dat, cancellabile solo con qualche 
trucchetto o qualche tool.
Anche se non ci sono ancora passato (ma ci manca poco), viva lo spirito 
libertario di linux, e viva firefox, ormai per me assolutamente 
insostituibile.
E poi mi tengo da parte il Dos 6 e Win98, perchè tutto sommato vanno 
proprio bene anche loro,e poi non si sa mai :-) :-) :/
ArchiPit

 E.
S.
-- 
were all living in amerika, amerika is wunderbar
music is coming out of the White House, and near Paris stands Mickey Mouse
were all living in amerika, coca-cola sometimes war

> e viva firefox, ormai per me assolutamente insostituibile.
Questo è vero, Firefox è fantastico...lo uso anche io al posto di Explorer, 
tranne per quei (pochi) siti che aperti con Firefox si incasinano o non 
vengono visualizzati correttamente, ma per il resto è un browser strepitoso!
E.


mi associo! e senza sarcasmo.
Carmine

 di no...ma è così, fidati...ne conosco tanti.
Diciamo che:
 - su windows conosco gente che formatta ogni 6 mesi anche solo perché
ha sentito dire che è necessario farlo per non veder arrancare l'OS
dietro a un file di registro elefantiaco;
- su osx non formatti se non per casi disperati, in ogni caso esiste una
funzione chiamata "archivia e installa" che ti reinstalla l'OS nuovo e
ti rimette tutta la tua roba dentro e in mezzora sei di nuovo operativo
(senza stare a rimettere drivers, firewall, patch, antivirus..)
- su Linux non so e non mi pronuncio :)
- e soprattutto: l'utente MacOs e Linux non formatta: inizializza :-P


  mediamente
appunto...


 dentro ci sono riferimenti non più necessari
FALSO Per 2 motivi:
- Il registro anche se ha 5000 o 10000 chiavi in più obsolete (es.
residui di vecchie installazioni/disinstallazioni) non cambia le sue
prestazioni più di tanto in quando l'algoritmo che effettua la ricerca
di una chiave lavora su grandi numeri e con pochi accessi accede in un
attimo in un archivio con tantissime chiavi, quindi che ce ne siano
anche 5000 o 10000 sporche non cambia più di tanto (quasi quasi non
vale nemmeno la pena di usare i pulitori di registro, anche se io per
mania li uso lo stesso :-) ).
- Il registro NON viene caricato tutto in memoria ma solo quelle parti
strettamente necessarie per compiere determinate operazioni (es.
partenza, configurazione di hardware, inizializzazione di software in
caricamento, ecc.) e comunque una volta che un programma utilizza le
chiavi dopo le chiude scaricandole dalla memoria nuovamente. Inoltre
esiste sempre la memoria virtuale che scarica su memoria di massa (file
di swap) le eventuali porzioni di registro caricate e non
frequentemente usate nella sessione corrente di lavoro.
Saluti da P4

 FALSO Per 2 motivi:
Ho smesso di leggere qui.
Per fortuna OSX non ha il registro :D


 frequentemente usate nella sessione corrente di lavoro.
Non mi risulta nemmeno questo. AFAIK essendo l'accesso al registry
gestito dal Cache Manager ed essendo le hive accedute come
memory-mapped, non dovrebbero poter essere swappate, ma caricate in
memoria su accesso ed invalidate le pagine di memoria fisica nel momento
di richieste da parte di altri processi.
Dato che non sono un esperto del kernel di Windows sarebbe interessante
che qualche persona preparata sull'argomento potesse confermare o
smentire quanto sopra dedotto.
Oppure, P4, hai qualche link che descriva ciò che tu hai affemato con
tanta sicurezza?
-- 
Flavio Visentin
Membro del CICAP
Comitato Italiano per il Controllo delle Affermazioni di P4

 smentire quanto sopra dedotto.
Allora taci se non le sai le cose!
Saluti da P4

 evita di usare termini a sproposito.
Come hai fatto tu con scandire
A parte questo tuo bellissimo modo di postare sempre 2 volte lo stesso 
messaggio, impara l'italiano, o almeno controlla prima di spedire.


 significato
ahimè mi tocca correggermi... (giusto per non farlo fare da P4)
dal dizionario DeMauro-Paravia leggo questo alla voce "scandire":
1...
2...
3...
4 TS inform., telecom., sottoporre a scansione


 Allora taci se non le sai le cose!
Quarda che ho richiesto il parere di un esperto, non il tuo.


 qualcosa di questo fantomatico algoritmo.
Allora riassumendo come funziona il registro:
- il registro è un archivio su disco
- il registro viene gestito con una cache in memoria che come tale NON
può contenere tutto il registro ma solo un suo sottoinsieme
- le parti più frequentemente accedute vengono mantenute in pagine di
memoria di tipo kernel e quindi non possono esse swappate
- quando una pagina di memoria di tipo kernel non viene più
frequentemente usata viene trasferita o marcata come pagina di memoria
"normale" e quindi può subire swapping
- quando la cache viene completamente riempita e non c'è più spazio
per allocare nuove pagine allora vengono trasferite su disco le pagine
di memoria normale (swap di pagina)
- come tutte le cache (persino anche quelle dei microprocessori) si usa
l'accesso via hash o chiave-valore in modo da accedere alla esetta
posizione dove si trova il dato nell'archivio basandosi sul contenuto
della chiave (mediante una funzione detta di hashing, dal nome della
chiave si calcola l'indirizzo dove si trova la chiave e così QUASI
indipendentemente dal numero di chiavi che ci sono nell'archivio è
possibile trovare l'esatta posizione logica o fisica della chiave in 1
o 2 o pochissimi accessi a seconda della bontà della funzione di
hashing)
- esiste anche una cache speciale per le chiavi chiuse cioè le chiavi
chiuse vengono mantenute in una speciale cache e quelle che sono state
chiuse da molto tempo vengono poi scaricate dalla memoria, quelle
recenti no perchè potrebbero essere accedute nuovamente nel breve
periodo.
Saluti da P4

 periodo.
E c'è una cache speciale per una cosa che dovrebbe essere sempre così?
Sono proprio strani sti uomini di Redmond.
ROTFL.


 questa bontà).
Guarda che non è un algoritmo ma è un modo che serve per memorizzare
le chiavi e poi accedere al database. In sostanza attraverso una
funzione matematica si converte la chiave in un indirizzo fisico e poi
la si memorizza in quel posto così per ritrovare la chiave è
sufficiente calcolare l'indirizzo con la funzione di hash (caso ideale
di funzione biunivoca ideale ecc)
Leggi e crepa ignorante:
http://www.partow.net/programming/hashfunctions/
hash functions have a complexity of O(1), that is why look-ups for data
in a hash-table are said to be of O(1) complexity
Nel caso di funzione hash ideale la complessita cioè il tempo di
ricerca è un "o grande" di 1 ovvero cioè è una costante indipendente
dal numero di chiavi e cioè con 1 accesso trova la chiave
indipendentemente dal numero di chiavi dell'archivio.
Saluti da P4

 nello swap e poi, ad un successivo accesso, riletti dallo swap....
Imbecille non aviene lo swap di tutto il registro ma avviene lo swap di
una pagina! Vedo che non sai nemmeno come funziona la memoria virtuale
di Windows! 
Saluti da P4

 cache e del loro stato.
coglione, la mappa è un caso particolare di funzione hash cioè la
cache è una memoria associativa che utilizza la chiave stessa per
accedere alla locazione in sostanza la chiave è essa stessa un
indirizzo.
Saluti da P4


OK. Forse allora non ti è chiaro che cos'è un hash.


 indipendentemente dal numero di chiavi dell'archivio.
Imbecille. La complessità della funzione di hashing (che possiamo
assumere come O(1) per il discorso precedente) non è legata con la
complessità della ricerca dell'hash nella lookup table, che nel migliore
dei casi (ricerca dicotomica) è O(log n).
E' vero che sei coglione, ma almeno evita di sparare troiate a questi
livelli.


 di Windows! 
Coglione, mi spieghi dove ho detto che viene swappato TUTTO il registry?
Coglione, mi spieghi dove ho detto che TUTTO il registry è di soli 10MB?
Coglione, se la memoria RAM in un istante T è completamente occupata ed
un programma mi richiede 10MB di RAM, quanta RAM verrà swappata su disco?
Coglione, sai leggere o fai finta di saperlo fare?



STRONZATE MEGAGALATTICHE in quanto l'organizzazione hash è fatta
apposta per fare un seek diretto alla posizione della chiave da trovare
e non c'è alcuna ricerca da fare, in quanto la chiave viene
trasformata in un indirizzo e con 1 solo accesso si fa il seek a
quell'indirizzo.
Sei proprio un imbecille.
Saluti da P4

 dei casi (ricerca dicotomica) è O(log n).
STRONZATE MEGAGALATTICHE in quanto l'organizzazione hash è fatta
apposta per fare un seek diretto alla posizione della chiave da trovare
e non c'è alcuna ricerca da fare, in quanto la chiave viene
trasformata in un indirizzo e con 1 solo accesso si fa il seek a
quell'indirizzo.
O(1) è riferito al numero di accessi utilizzando l'organizzazione hash
e non alla complessità nel calcolare l'indirizzo è che trascurabile
rispetto all'accesso fisico.


 dei casi (ricerca dicotomica) è O(log n).
Leggi è crepa IMBECILLE:
http://www.zimuel.it/conferenze/tabellehash.pdf
c' è scritto in italiano: "Vedremo che in media il tempo di ricerca di
un elemento
in una tabella hash è O(1)."
Saluti da P4

 Saluti da P4
http://www.zimuel.it/conferenze/tabellehash.pdf


 Sei proprio un imbecille.
Guarda, detto da te lo reputo un complimento. :-)


 in una tabella hash è O(1)."
Vedi che quando dico che sei un COGLIONE non mi sbaglio?
Tu non hai letto (come se ci fossero dubbi in proposito) il documento
che hai linkato, che afferma ESATTAMENTE le stesse cose che ho affermato
io.
O(1) è la complessità dell'algoritmo ideale, ovvero quello in cui ogni
possibile valore viene identificato da una chiave nell'array. A pag. 8
chiarisce i motivi per cui tale metodo non è applicabile, ovvero il
fatto che lo spazio dei valori U è spoporzionatamente maggiore dello
spazio delle chiavi K, per cui vi sarebbe uno spreco di chiavi immenso
(che si tradurrebbe in perdita di spazio in RAM) se si utilizzasse una
tabella siffatta.
La soluzione al problema viene descritta da pag.9 a pag.11, mentre a
pag. 12 riporta giustamente che la complessità della ricerca
nell'applicazione del metodo delle tabelle hash è, nel caso peggiore,
O(n) [io qui avevo comunque menzionato il caso reale in cui la
complessità è O(log n), sempre assumendo che la funzione di hash abbia
una distribuzione uniforme].
A pag.13 spiega (come avevo detto precedentemente) che il calcolo
dell'hash può essere assimilato a O(1) (per cui non inficia sul
rendimento dell'algoritmo di ricerca); da pag.14 in avanti seguono vari
teoremi e dimostrazioni matematiche sull'uso delle funzioni hash.
Quindi LEGGI E CREPA te li puoi ficcare nel didietro, dato che sei tu il
primo ignorante che non sa leggere, nemmeno in italiano.


 Sei proprio un imbecille.
COGLIONE se non sai leggere e non hai sufficienti capacità intellettive
per capire il significato di ciò che riporti, non è colpa mia o degli
altri utenti del NG.
Ma da dov'è che era saltato fuori che avevi una laurea in ingegneria???
IMHO è letteralmente impossibile che tu possa averla conseguita, perché
questi argomenti sono affrontati nel primo anno in info 1 a analisi 1,
quindi, se realmente hai tale laurea, dove l'hai comprata??


 in una tabella hash è O(1)."
Quindi significa che tu non sai leggere nemmeno l'italiano (l'inglese è
ormai assodato che non lo comprendi) e soprattutto che rispondi alla
cazzo senza leggere tutto il documento da cui hai estrapolato una frase.
Per diletto dei nostri lettori riporto la frase successiva a quella da
te riportata:
-------------------------------------------------------------
• L’indirizzamento diretto è una tecnica semplice che funziona
bene quando l’universo U delle chiavi è ragionevolmente
piccolo.
-------------------------------------------------------------
Nel caso del registry di Windows, per poter utilizzare l'indirizzamento
diretto, sarebbe necessario, nell'ipotesi che ciascuna chiave sia solo
letterale ed abbia una lunghezza *massima* di 13 caratteri (cosa
palesemente non vera), avere un'array di dimensione > 2,5E45 elementi
(come riportato a Pag.7).
Leggi e soprattutto crepaz


 (come riportato a Pag.7).
L'organizzazione hash si usa anche per archivi di grossissime
dimensioni nell'esempio fa un esempio banale a titolo semplificativo.
Tu hai dimostrato di non capire nulla di funzioni hash e di
organizzazioni hash. L'esempio che fa è nel caso ideale, nel caso non
ideale la funzione hash non è biunivoca e ci sono le collisioni e si
passa da un O(1) a qualche accesso in più per risolvere le collisioni,
ma siamo LONTANISSIMI da O(log2n) della ricerca binaria che tu citavi
che fra l'altro era fortemente dipendente da n).
Saluti da P4

 io.
Per piacere evita di prendere per i forndelli la gente.
Tu hai scritto questo:
"b) ricerca della chiave nella lookup table (in cui l'algoritmo più
vantaggioso richiede log2 n cicli di confronto)"
Dimostrando di non capire nulla di cosa sia una organizzazione hash visto 
che parli di ricerca binaria.

 che fra l'altro era fortemente dipendente da n).
Ci sei o ci fai? La complessità di una funzione o è O(1) oppure è per
forza O(f(n)) dove f(n) può essere "qualsiasi cosa sensata".
Ti prego di riguardardi la definizione di funzione asintotica prima di
proseguire in una discussione di cui non capisci il significato.


 che parli di ricerca binaria.
a) se sei P4 piantala di fare morphing; è una brutta abitudine che
troppo spesso usi quando ti trovi nella merda perché ti rendi conto di
aver (come al solito) sparato cazzate e di aver dimostrato per
l'ennesima volta la tua ignoranza.
Una persona intelligente (che tu non sei) ammette il proprio errore, non
si inventa nuovi personaggi che nascono e muoiono solo per tentare di
avvalorare la propria malsana opinione.
b) se non sei P4 allora fagli compagnia nello studio dell'informatica
perché evidentemente siete sullo stesso livello.


 fermo alla dicotomica.
Tu ignori che l'organizzazione hash NON è un semplice archivio
ordinato dove le chiavi sono messe a caso, ma sono preventivamente
memorizzate all'indirizzo generato dalla funzione hash!! Ancora una
volta dimostri la tua COMPLETA IGNORANZA e STUPIDITA'.
Saluti da P4

 volta dimostri la tua COMPLETA IGNORANZA e STUPIDITA'.
Allora illustrami la funziona hash che, dato in ingresso una stringa mi
genera un indirizzo di memoria (o un indice dell'array).
Suvvia, non č difficile per un genio del tuo calibro.


 genera un indirizzo di memoria (o un indice dell'array).
la più semplice e stupidissima funzione hash è questa:
- consideri i caratteri ascii come numeri (numero corrispondente ascii)
- sommi i numeri corrispondenti e fai il modulo con il numero di
elementi dell'array in modo da avere un indice compreso fra 0 e n-1.
Saluti da P4

 l'unica che potrebbe avere complessità O(1).
Nel caso non ideale in cui hai le collisioni e quindi in cui sono
risolte per esempio tramite concatenazione, hai sempre O(1) come viene
dimostrato qui:
In una tabella hash in cui le collisioni sono risolte per
concatenazione, nell'ipotesi di uniformità semplice della funzione
hash, una ricerca con successo richiede in media tempo T(1+a)
Per cui T(1+c(a/2))=T(1+a) con 0<= c <1.
· Da questa analisi se ne deduce che se il numero di posizioni
nella tabella hash è almeno proporzionale al numero di elementi
nella tabella, ossia n=O(m), si ha a=n/m=O(m)/m=O(1). Quindi
la ricerca richiede in media tempo costante.
http://www.zimuel.it/conferenze/tabellehash.pdf
Saluti da P4

 elementi dell'array in modo da avere un indice compreso fra 0 e n-1.
Visto che non sei capace di scrivere qualche riga di codice, eccoti
allegato uno scrippettino che ti mostra come funziona la ricerca della
chiave in un simil registry con l'hash table. Se lo completi e fai un
po' di prove ti puoi rendere conto anche autonomamente che il numero di
cicli necessari per trovare un valore arbitrario è sempre (o quasi)
maggiore di 1 (e a volte anche di molto)
Divertiti a provare; ho gestito solo minimamente le collisioni,
simulando la concatenazione con un array (non ordinato) e limitandomi a
riportare il numero di collisioni.
Il registry è stato simulato con stringhe da 2 a 32 caratteri casuali
(tra chr 32 e chr 126) e come hash ho usato la tua funzione. Il valore
corrispondente (che nella realtà sarebbe l'indirizzo di memoria cui è
mappata quella chiave di registry) è in questo caso un intero da 0 a n-1.
Un registry è composto da + di 180.000 chiavi appena installato, mentre
 la dimensione dell'hash table di XP non _penso_ contenga + di 1000
elementi (oltre l'occupazione di ram sarebbe elevata). Questo implica
che, nel migliore dei casi, la ricerca di una chiave arbitraria richiede
in media log2(180000/1000) = 8 cicli, ben di più del singolo accesso da
te prospettato (per confronto una ricerca semplice su 180000 elementi
ordinati richiederebbe in media 18 cicli). Se le liste non fossero
ordinate i cicli medi necessari sarebbero n/m ovvero 180 ma in compenso
l'inserimento sarebbe più rapido, 1 ciclo al posto di log2(n/m).
Eccoti lo script: 72 righe.
#!/usr/bin/perl
use strict;
sub crea_registry {
    my $num = shift || 1000;
    my $registry = undef;
    for (my $i=0;$i<$num;$i++) {
        my $str = '';
        for (my $j=1;$j<rand 32;$j++) {
            $str .= chr(32 + rand 94) ;
        }
        $registry->{$str} = $i;
    }
    return $registry;
}
sub calcola_hash {
    my $input = shift || '';
    my $dim = shift || 1000;
    my $ret = 0;
    foreach ( split(//, $input) )  {
       $ret = $ret + ord ;
    }
    return $ret % $dim;
}
print "Inserisci il numero di elementi: ";
my $input = <STDIN>;
print "Inserisci la dimensione dell'hash-table: ";
my $dim = <STDIN>;
my $hash = &crea_registry ($input);
my @table = undef;
my $debug = 0;
foreach my $el (sort { $hash->{$a} <=>  $hash->{$b} } keys %$hash) {
    my $el_hash = &calcola_hash($el,$dim);
    printf "%-32s %-6d %-10d ---> ", $el, $hash->{$el}, $el_hash if $debug;
    if ( not defined $table[$el_hash] ) {
        $table[$el_hash] = $hash->{$el};
        print "1st\n" if $debug;
    } else {
        # Se era uno scalare converto in vettore
        if (ref $table[$el_hash] ne 'ARRAY' ) {
            my $tmp=$table[$el_hash];
            $table[$el_hash] = undef;
            push @{$table[$el_hash]}, $tmp;
            print "2nd\n" if $debug;
        } else {
            print "more\n" if $debug;
        }
        push @{$table[$el_hash]}, $hash->{$el};
    }
}
print "\nInserire la stringa da ricercare (quit per uscire): ";
while (my $search = <STDIN>) {
    last if $search eq 'quit';
    chop $search;
    my $search_idx = &calcola_hash($search,$dim);
    print "Ricerca di '$search' (hash: $search_idx) ---> ";
    if ( not defined $table[$search_idx] ) {
        print "Stringa non trovata";
    } elsif ( ref $table[$search_idx] eq 'ARRAY' ) {
        print "Stringa collidente (", $#{$table[$search_idx]}, ")";
    } else {
        print "Stringa trovata";
    }
    print "\nInserire la stringa da ricercare (quit per uscire): ";


 indicizzata).
Ma che cazzate stai dicendo?????
lo vuoi o no capire che nell'organizzazione hash NON si fanno ricerche
ma si fanno accessi diretti si o no? Poi se anche volessi fare la
ricerca binaria in un'organizzazione hash distruggendo l'utilità
dell'organizzazione hash, non potresti dato che l'archivio hash NON è
ordinato ma le chiavi sono posizionate agli indirizzi generati dalla
funzione hash.
Con questo chiudo è hai solo dimostrato di NON capire nulla di cosa
sia una organizzazione hash.
Saluti da P4

 indirizzo e come questi indirizzi possano essere tutti consecutivi.
Anche con questa frase "indirizzi consecutivi" hai dimostrato di non
capire nulla di cosa sia un'organizzazione hash, in quanto le chiavi
vengono trasformate in indirizzi casuali e memorizzate a quegli
indirizzi casuali nel vettore, NON vengono posizionate
consecutivamente. (infatti uno dei piccoli svantaggi è sprecare un po'
di spazio).
Saluti da P4

     }
Non ti sei accorto che hai fatto un accesso diretto nel vettore table[]
all'indirizzo search_idx generato dalla funzione hash?
$table[&search_idx]
Sei un coglione!
Saluti da P4

 indicizzata).
Hai finito di sparare vaccate?
Pag.16 di
http://www.zimuel.it/conferenze/tabellehash.pdf
"Analisi dell'organizzazione hash con concatenazione":
Per cui ?(1+c(?/2))=?(1+?) con 0<= c <1.
. Da questa analisi se ne deduce che se il numero di posizioni
nella tabella hash è almeno proporzionale al numero di elementi
nella tabella, ossia n=O(m), si ha ?=n/m=O(m)/m=O(1). Quindi


la ricerca richiede in media tempo costante.
E poi dice senza lasciare alcun dubbio:
"
. Poiché l'inserzione richiede tempo O(1) nel caso peggiore e la
cancellazione, quando le liste sono bidirezionali, richiede tempo
O(1) nel caso peggiore, tutte le operazioni del dizionario possono
essere eseguite in media con tempo O(1)."
Saluti da P4

 essere eseguite in media con tempo O(1)."
Questa è la frase che leggo io sul documento.
"Insert: O(1) nel caso peggiore, Search: O(a) dove a è la
lunghezza della lista nel caso peggiore, Delete: O(1) nel caso
peggiore con liste bidirezionali, O(a) nel caso di liste semplici"
Quindi è palese la tua malafede. Perché hai omesso la ricerca (strano
vero?) che è O(a) nel caso peggiore ed il delete che è O(a) nel caso di
liste semplici?


 sia una organizzazione hash.
Tu hai dimostrato di non saper leggere.


 Sei un coglione!
Non ti sei accorto che poi devi fare una ricerca per ottenere il dato
che ti serve, dato che $table[] è un vettore di puntatori a liste nella
realtà?
Sei un coglione!


 di spazio).
e allora la ricerca non può essere O(1) perché per essere O(1) dovresti
contemplare tutto lo spazio dei possibili valori, il che significa che
dovresti utilizzare Petabyte di RAM per contenere l'hash table.
Se non vuoi sprecare troppa RAM devi utilizzare liste che richiedono
quindi una successiva ricerca, abbassando l'efficienza delle tabelle
hash a O(a) dove a=n/m.
