View Full Version : Ottimizzazione massima: codice eseguito 27000 volte
si tratta di eseguire 5 sostituzione su una stringa.
Es.
stringa = stringa.sostituisci("var1", var1);
stringa = stringa.sostituisci("var2", var2);
stringa = stringa.sostituisci("var3", var3);
stringa = stringa.sostituisci("var4", var4);
stringa = stringa.sostituisci("var5", var5);
Non posso effettuare l'operazione per riferimento perchè il metodo sostituisci di C# (il linguaggio che uso) non lo supporta.
cherca di usare i puntatori invece che l'oggetto string (il c# li dorebbe supportare)
cioe ti vai la variabile cher * stringa che punta direttamente all'area di memoria che contenga la string a meno che tu dopo non devi utilizare una funzione dell'oggetto string
Ciao..
Futuregames
17-03-2005, 22:23
cmq 27000 volte nn sono un po troppe?:confused:
Originariamente inviato da Futuregames
cmq 27000 volte nn sono un po troppe?:confused:
Dipende da quello che devi fare ;)
Lo devi eseguire su un P4 con Hyper Threading ? In tal caso potresti creare due thread separati...la velocità ti dovrebbe aumentare di circa il 50-60%...
Originariamente inviato da cionci
Dipende da quello che devi fare ;)
Lo devi eseguire su un P4 con Hyper Threading ? In tal caso potresti creare due thread separati...la velocità ti dovrebbe aumentare di circa il 50-60%...
No, purtroppo è su un athlon
Originariamente inviato da cionci
Dipende da quello che devi fare ;)
Lo devi eseguire su un P4 con Hyper Threading ? In tal caso potresti creare due thread separati...la velocità ti dovrebbe aumentare di circa il 50-60%...
solo per curiosità...
in C++ si potrebbe creare due th separati???
come???
Certo... Su Windows si possono usare le API, su Linux i pthread...
Originariamente inviato da gik25
No, purtroppo è su un athlon
Prova ad implementare una funzione che lavora direttamente sulla stringa...magari con un solo ciclo potresti controllare tutte e 5 le stringhe...
Risolto usando la classe StringBuilder
/\/\@®¢Ø
18-03-2005, 20:18
Originariamente inviato da gik25
si tratta di eseguire 5 sostituzione su una stringa.
Es.
stringa = stringa.sostituisci("var1", var1);
stringa = stringa.sostituisci("var2", var2);
stringa = stringa.sostituisci("var3", var3);
stringa = stringa.sostituisci("var4", var4);
stringa = stringa.sostituisci("var5", var5);
Non posso effettuare l'operazione per riferimento perchè il metodo sostituisci di C# (il linguaggio che uso) non lo supporta.
Non te lo lascia fare perche' probabilmente prevede la possibilita' di sostituire stringhe di una dimensione con stringhe di altra. Se proprio hai bisogno di maggiore velocita', e non devi cambiare la dimensione della stringa, butta tutto in un vector e ti scrivi tu la funzione di sostituzione.
Originariamente inviato da /\/\@®¢Ø
Non te lo lascia fare perche' probabilmente prevede la possibilita' di sostituire stringhe di una dimensione con stringhe di altra. Se proprio hai bisogno di maggiore velocita', e non devi cambiare la dimensione della stringa, butta tutto in un vector e ti scrivi tu la funzione di sostituzione.
Ho risolto con StringBuilder
Si, ma è grazie a queste cazzate e alla continua segnalazione di "Impossibile convertire String in StringBuilder senza che il programmatore si rompa le palle a esplicitarlo" che i programmi fanno tutti pena e superano budget e tempi.
/\/\@®¢Ø
19-03-2005, 14:03
Originariamente inviato da gik25
Ho risolto con StringBuilder
Si, ma è grazie a queste cazzate e alla continua segnalazione di "Impossibile convertire String in StringBuilder senza che il programmatore si rompa le palle a esplicitarlo" che i programmi fanno tutti pena e superano budget e tempi.
Pensandoci bene, mi sembra molto ragionevole invece. Se le stringhe sono immutabili (come mi sembra sia nel C#), ne segue immediatamente che non esiste alcuna funzione/metodo in grado di modificarle, ergo bisogna orientarsi subito su di un'altra classe.
Di solito disguidi come questi dipendono solo dal fatto che si ha esperienza con un linguaggio che si comporta diversamente, tipicamente C o C++.
RaouL_BennetH
19-03-2005, 14:55
Originariamente inviato da gik25
Ho risolto con StringBuilder
Si, ma è grazie a queste cazzate e alla continua segnalazione di "Impossibile convertire String in StringBuilder senza che il programmatore si rompa le palle a esplicitarlo" che i programmi fanno tutti pena e superano budget e tempi.
potresti spiegarmi per piacere cosa intendi con questo?
Thx.
RaouL.
/\/\@®¢Ø
19-03-2005, 23:17
Originariamente inviato da RaouL_BennetH
potresti spiegarmi per piacere cosa intendi con questo?
Thx.
RaouL.
Probabilmente che e' in ritardo col progetto e che a causa del contrattempo in questione si e' guadagnato nuovamente qualche rimbrotto da chi aspetta risultati
:D
Se e' cosi' non preoccuparti gik, sei in buona compagnia :D :rolleyes: :cry:
Originariamente inviato da /\/\@®¢Ø
Probabilmente che e' in ritardo col progetto e che a causa del contrattempo in questione si e' guadagnato nuovamente qualche rimbrotto da chi aspetta risultati
:D
Se e' cosi' non preoccuparti gik, sei in buona compagnia :D :rolleyes: :cry:
:D
Ancora sono solo uno studente, ma già adesso sono stanco di vedere un proggetto che richiede un'ora di lavoro durare 10 ore per via di cast esplici che sono richiesti anche per convertire da char[] a string.
è una stupida esagerazione. Se una colonna di database contiene solo interi a che pro devo convertirla in int? Tanto più che la conversione non gestisce le eventuali eccezzioni (in caso di valore null).
Peggio ancora Java che richiede di gestire tutte le eccezioni, quando si sa bene come verranno gestite dopo che uno si romperà le balle(try e catch globale nel main)
Ma non basterebbe creare un megadatabase di snippet di codice e consultarli dinamicamente inserendoli nel codice in automatico?
Bah... in dieci anni i progressi sono stati veramente minimi.
scusate, ma non è un po' strano parlare di ottimizzazione con un linguaggio come il C#? :D
lo dico sempre io: "the right tool for the right job" :p
negli ultimi tempi l'avrò ripetuto centiania di volte...
Con la nuova versione del framework e qualche ottimizzazione sono passato da 12 minuti a 12 secondi...
Fare una cosa così in assembler avrebbe richiesto 12..... mesi di programmazione e altri 12 per capire dove sta l'errore.
No, io guardo al futuro non al passato. Vorrei linguaggi che supportino anche reti neurali e similprolog con editor evolutissimi che non richiedano la scrittura di codice, ma la selezione di snippet e il collegamento di unit per poi passare il tutto a compilatori decenti.
Per darti un'idea qualcosa di mille volte superiore a Web Ratio potrebbe andare bene.
Originariamente inviato da 71104
scusate, ma non è un po' strano parlare di ottimizzazione con un linguaggio come il C#? :D
Non e' mai strano parlare di ottimizzazione in nessun linguaggio.
E' strano parlare di ottimizzazione invece se non si e' sicuri che un determinato pezzo di codice e' un collo di bottiglia. E per esserne sicuri servono i dati di un profiler.
Originariamente inviato da gik25
Ma non basterebbe creare un megadatabase di snippet di codice e consultarli dinamicamente inserendoli nel codice in automatico?
Il problema poi sarebbe... come scegliere lo snippet giusto in un milione di record? :D
Però sarebbe utile un supporto dei design pattern negli ambienti di sviluppo. Qualcosa c'è (XDoclet con generazione di codice automatica, ad esempio) ma c'è il problema di prendere confidenza con un ambiente e la sua logica...
Originariamente inviato da fek
Non e' mai strano parlare di ottimizzazione in nessun linguaggio.
E' strano parlare di ottimizzazione invece se non si e' sicuri che un determinato pezzo di codice e' un collo di bottiglia. E per esserne sicuri servono i dati di un profiler.
L'ho usato. Ma anche quelli (come tutto il resto del software) sono fatti veramente male.
Sarò un perfezionista ma vedo tutto migliorabile e di tanto.
I 5 o 6 profiler che ho provato sono giocattolini per bambini. Ogni volta restituiscono un valore diverso. NOn forniscono nemmeno il tempo*n° esecuzione linea.
Ho provato ANTS, PROFILER, quello della microsoft e altri che non sono nemmeno riuscito ad avviare
Originariamente inviato da Banus
Il problema poi sarebbe... come scegliere lo snippet giusto in un milione di record? :D
Però sarebbe utile un supporto dei design pattern negli ambienti di sviluppo. Qualcosa c'è (XDoclet con generazione di codice automatica, ad esempio) ma c'è il problema di prendere confidenza con un ambiente e la sua logica...
L'ide dovrebbe essere un posto dove la programmazione è svolta interamente per via grafica.
Es. la classe film ha questi campi pubblici. Questi salvali su file, questi su db xml, questi su db sql. Quando premo questo pulsante richiama quei campi e ricomponili.
Per scegliere gli snippet intelligenza artificiale (Prolog e reti neurali)
RaouL_BennetH
20-03-2005, 13:01
Originariamente inviato da gik25
L'ide dovrebbe essere un posto dove la programmazione è svolta interamente per via grafica.
Es. la classe film ha questi campi pubblici. Questi salvali su file, questi su db xml, questi su db sql. Quando premo questo pulsante richiama quei campi e ricomponili.
Per scegliere gli snippet intelligenza artificiale (Prolog e reti neurali)
Io sono un principiante in materia di programmazione, ma, il discorso che stai facendo credo di averlo compreso. Cioè, credo che tu stia cercando del codice in grado di scrivere automaticamente altro codice per operazioni noiose tipo la gestione di numerose caselle di 'input' (perdonerai l'esempio scemo, ma considera che ti sta parlando un principiante). Ora, tu facevi un paragone con assembler, che credo, secondo me, sia un pò fuori luogo perchè assembler mentre può, o poteva essere il linguaggio migliore per dialogare con l'hw sottostante, di certo non può essere pensato come linguaggio per sviluppare un software a livello 'database'. Credo però che in una certa misura, già oggi alcuni linguaggi stiano lavorando su questo concetto al quale giustamente fai riferimento. Ad esempio ieri ho cominciato a dare uno sguardo al Java e sono rimasto davvero sorpreso di quante migliaia di classi siano subito pronte e disponibili ad un programmatore evitandogli così di doversi riscrivere ogni volta cose abbastanza elementari. Ma, arrivando al dubbio che mi è venuto, così non si rischia(e lo chiedo a te e a tutti gli altri) di formare programmatori sempre meno preparati perchè dispongono di una formidabile pappa già pronta?
Thx.
RaouL.
Originariamente inviato da gik25
Ho provato ANTS, PROFILER, quello della microsoft e altri che non sono nemmeno riuscito ad avviare
Prova a usare VTune, altro che giocattolino :D
Comunque per la maggior parte io mi scrivo il codice per il profiling del mio codice, perche' e' piu' comodo. Poi quando si vuole fare il profiling della GPU diventa un vero e proprio dramma.
Originariamente inviato da RaouL_BennetH
Io sono un principiante in materia di programmazione, ma, il discorso che stai facendo credo di averlo compreso. Cioè, credo che tu stia cercando del codice in grado di scrivere automaticamente altro codice per operazioni noiose tipo la gestione di numerose caselle di 'input' (perdonerai l'esempio scemo, ma considera che ti sta parlando un principiante). Ora, tu facevi un paragone con assembler, che credo, secondo me, sia un pò fuori luogo perchè assembler mentre può, o poteva essere il linguaggio migliore per dialogare con l'hw sottostante, di certo non può essere pensato come linguaggio per sviluppare un software a livello 'database'. Credo però che in una certa misura, già oggi alcuni linguaggi stiano lavorando su questo concetto al quale giustamente fai riferimento. Ad esempio ieri ho cominciato a dare uno sguardo al Java e sono rimasto davvero sorpreso di quante migliaia di classi siano subito pronte e disponibili ad un programmatore evitandogli così di doversi riscrivere ogni volta cose abbastanza elementari. Ma, arrivando al dubbio che mi è venuto, così non si rischia(e lo chiedo a te e a tutti gli altri) di formare programmatori sempre meno preparati perchè dispongono di una formidabile pappa già pronta?
Thx.
RaouL.
Sempre meno preparati?
Studio ingegneria informatica al 5° anno e ho visto cose che non avrei nemmenio immaginato (basta pensare che praticamente abbiamo visto come si costruisce una alu, tutti i meccanismi di elaborazione di una istruzione a livello hardware, ecc) ebbene sai che ti dico?
Che non serve a nulla, perchè non potrò mai e poi mai e poi mai tenere conto di alcun criterio hardware mentre programmo. Programmare secondo le regole dell'ingegneria informatica significa far si che un proggetto duri 20 anni.
Sono queste le cose che fanno fallire siti come ilnuovo e fabnno si che forum come questo basati su un programma non ottimizzato nè basato su ingegneria del software sia produttivo in termini economici.
Avere poca spesa e codice ottimo richiede che siano database e intelligenza artificiale a semplificare il compito attualmente svolto interamente da persone.
Originariamente inviato da fek
Prova a usare VTune, altro che giocattolino :D
Comunque per la maggior parte io mi scrivo il codice per il profiling del mio codice, perche' e' piu' comodo. Poi quando si vuole fare il profiling della GPU diventa un vero e proprio dramma.
Crei videogame? :sbav: :ultrasbav:
Originariamente inviato da RaouL_BennetH
Ma, arrivando al dubbio che mi è venuto, così non si rischia(e lo chiedo a te e a tutti gli altri) di formare programmatori sempre meno preparati perchè dispongono di una formidabile pappa già pronta?
Il problema non è tanto la formazione dei programmatori... piuttosto è: hai tempo (e soprattutto soldi) per creare i componenti che ti servono? Oppure è meglio avere codice standard già pronto?
Lo sviluppo di database è piuttosto standard. Un'applicazione che a partire dallo schema grafico delle tabelle genera automaticamente SQL, classi e metodi get/set accelera notevolmente i tempi di sviluppo. Inoltre quando si vuole modificare una tabella, si modifica uno schema e il programma aggiorna tutto il resto (le cose in realtà non sono così semplici, soprattutto se hai messo le mani sul codice generato ;) ).
La tendenza è invece: uso codice pronto se c'è (lavoro risparmiato) e mi concentro sulle parti critiche del codice (sicurezza se applicazione bancaria, prestazioni se è un gioco o un programma scientifico etc.). In questo giocano un ruolo importante i profiler citati da fek.
PS: vedo che gik25 ha già risposto ;)
Originariamente inviato da gik25
L'ide dovrebbe essere un posto dove la programmazione è svolta interamente per via grafica.
Es. la classe film ha questi campi pubblici. Questi salvali su file, questi su db xml, questi su db sql. Quando premo questo pulsante richiama quei campi e ricomponili.
Per scegliere gli snippet intelligenza artificiale (Prolog e reti neurali)
Questo e' il vecchio adagio del "progetta l'applicazione prima con un qualche linguaggio formale e poi dalla in pasto ad un tool di generazione del codice".
Purtroppo... non funziona :)
Ecco perche' non esiste, non perche' la programmazione non si e' evoluta, ma perche' questo approccio e' sbagliato per diversi motivi:
- scrivere codice e' un'attivita' complessa e non meccanica
- il design del codice e' piu' chiaro quando il codice e' stato scritto, non prima che sia scritto (quindi e' impossibile scrivere il design con un linguaggio evoluto come immagini)
- scrivere codice e' un processo evolutivo: si formano delle ipotesi sulla soluzione al problema, si testano le ipotesi, si cambiano le ipotesi e magari poi cambia anche il problema e si ricomincia dall'inizio: nessun tool CASE e' in grado, e probabilmente sara' mai in grado, di stare al passo di un simile processo.
In un certo senso e' come sperare che esistano tool che una volta dato l'input siano in grado di produrre un quadro: "Ora disegnami la Gioconda"... e lui parte e disegna :)
Scrivere codice e' un processo per moltissimi aspetti creativo e non meccanico, per questo tutti i tentativi sulla strada della generazione automatica del codice sono falliti e molto probabilmente non sono teoricamente possibile.
Sono andato un po' fuori tema? :)
Originariamente inviato da gik25
Crei videogame? :sbav: :ultrasbav:
E' molto meno ultrasbav di quanto pensi :|
Originariamente inviato da fek
E' molto meno ultrasbav di quanto pensi :|
:Iperultramegasbav:
è stato il mio sogno per anni e anni, avevo persino scritto quadernini appuntando cosa sarebbe migliorabile in giochi come age of empires, prevedendone varianti e sognado di realizzarle un giorno.
Penso che sarei più portato per la funzione di game designer (si chiama così chi da le idee per il videogame?)
Mi piace confrontare Duke Forever (dalle immafini del video), Doom 3 e Half Life 2 e ricavare il modello vincente di ciascuno. Vedere sotto quali aspetti uno è superiore all'altro e soprattutto constatare sempre di più quanto la presenza di dati elementi sia importante: dettagli (a che serve un superengine grafico se tutti i livelli sono uguali e le texture sono uguali), scripting, dettagli coerenti con la trama (vedi half life 2 e i cosi che ti fotografano la retina)
Ultimamente ho iniziato a rinunciare all'idea in quanto tra 15 anni (quando potrei essere competitivo sul mercato dei videogame) non ci sarà più spazio per aziende di piccole dimensioni.
Infatti mi sarebbe piaciuto mettermi in proprio e creare i videogame che piacciono a me.
I miei miti: Duke, Half Life, Syndicate e Ultima 8.
Age of empires per me ha sempre lasciato difetti nel gameplay facilmente correggibili (e corretti da giochi tipo tiberian sun e red alert)
Doom 3 come tutti i giochi della id butta via le sue carte. Confrontatelo con Half Life 2. La id ha sempre creato ottimi motori grafici per poi pagare pochi level designer e textuire designer... :D
RaouL_BennetH
20-03-2005, 13:33
Originariamente inviato da gik25
Sempre meno preparati?
Studio ingegneria informatica al 5° anno e ho visto cose che non avrei nemmenio immaginato (basta pensare che praticamente abbiamo visto come si costruisce una alu, tutti i meccanismi di elaborazione di una istruzione a livello hardware, ecc) ebbene sai che ti dico?
Che non serve a nulla, perchè non potrò mai e poi mai e poi mai tenere conto di alcun criterio hardware mentre programmo. Programmare secondo le regole dell'ingegneria informatica significa far si che un proggetto duri 20 anni.
Sono queste le cose che fanno fallire siti come ilnuovo e fabnno si che forum come questo basati su un programma non ottimizzato nè basato su ingegneria del software sia produttivo in termini economici.
Avere poca spesa e codice ottimo richiede che siano database e intelligenza artificiale a semplificare il compito attualmente svolto interamente da persone.
Difatti questi punti li comprendo, solo che il dubbio che mi viene e al quale sembra aver risposto fek, sta appunto nella complessità di dover scrivere codice.
@ Banus:
Per i database credo sia sicuramente un approccio giusto, ma non tutta la programmazione è rivolta ai database e credo quindi che l'approccio non possa essere lo stesso.
Portate pazienza se quello che scrivo a voi sembra stupido, ma spero che questi dubbi all'inizio siano venuti anche a voi :P
Originariamente inviato da RaouL_BennetH
Per i database credo sia sicuramente un approccio giusto, ma non tutta la programmazione è rivolta ai database e credo quindi che l'approccio non possa essere lo stesso.
Ho fatto l'esempio dei database perchè il vantaggio è evidente.
La tendenza però è riutilizzare codice se possibile. Ad esempio nella programmazione di giochi, dove è difficile applicare metodologie standard, si cerca di usare codice già pronto se possibile (esempio: conversione di una mesh o semplificazione di una mesh).
Infatti nelle DirectX sono presenti un gran numero di funzioni di utilità generale.
Il mio maggiro dubbio attuale è: esiste qualcosa di fatto bene o nel mondo tutto viene realizzato solo ed esclusivamente secondo criteri economici?
Ti faccio un esempio cretino.
Defrag della Norton è peggiorato tantissimo dalle versioni precedenti. Adesso non ha neppure un timer che indica da quanto tempo è iniziato.
Costa troppo pagare un programmatore per creare una label, un timer e gestire un evento?
Occuperbbe troppo processore? [Ma se durante un defrag il processore non fa altro che attendere IO]
Altro esempio: Gratì di Ariete
Utilizza ancora una batteria con memoria. Però le istruzioni affermano che può essere anche lasciato sempre collegato (peccato che se lo fai la batteria dura 20 minuti, contro 10 giorni iniziali)
Non ha l'attacco per l'alimentazione esterna che sarebbe stato utilissimo.
Altro esempio: Trasformatori
Il 90% dei trasformatori consuma anche se non c'è collegato nulla dai 7 W ai 14 W in un'ora. In 24 ore ogni trasformatore consuma come una lampadina da 200 W (una casa con due computer e due televistori, 4 telefonini, ecc...)
I valori sono testati con un tester apposito da 34€ che vi consiglio di comprare.
Mi vengono in mente altri migliaia di esempi. In tutti i campi (tranne in quello militare e forse nel cinema) le cose sono sempre e comunque fatte a cazzo. Non migliorabili (che sarebbe normale) ma decisamente fatte a cazzo.
Si aggiunga poi alla lista ogni software opensource.
Altro esempio di cose fatte a cazzo: la gestione del raid, la mancanza di una emulazione software della ncs (si chiama così la tecnologia degli hard disk che permette di differire la scrittura di dati?)
Es. copio un file da c: a d: poi inizio a copiare un altro file da c: a d: basterebbe che windows accodasse le due operazioni (a meno che il secondo file non sia molto piccolo) e vedreste in computer andare 60 volte più veloci.
Se usate contemporaneamente 4 programmi più antivirus e servizi di windows L'UNICA cosa che rallenta il computer è il tentativo di svolgere in parallelo i vari comandi di IO costringendo la testina dell'HD a saltare continuamente da un punto all'altro...
E se per risolvere questa cazzatella devo cambiare la gestione a interrupt è ora di iniziare a pensarci. (Ma tanto non serve, basta abbassare la priorità delle cazzate tipo antivirus e servizi e dei programmi che chiedono di usare l'hard disk e sono in background)
Altro esempio i bios dopo diecimila anni ancora con un'interfaccia grafica penosa.
/\/\@®¢Ø
20-03-2005, 14:15
Originariamente inviato da gik25
:D
Ancora sono solo uno studente, ma già adesso sono stanco di vedere un proggetto che richiede un'ora di lavoro durare 10 ore per via di cast esplici che sono richiesti anche per convertire da char[] a string.
:confused:, non capisco dove vadano a finire le 9 ore (dubito si tratti di tempo passato a scrivere esplicitamente le conversioni, o almeno lo spero :D). Molto piu' subdolo trovare un errore dovuto ad una conversione automatica, ad esempio quando (nel caso di linguaggi a tipizzazione dinamica ovviamente) invece di passare una lista con una stringa passi una semplice stringa e cosi' il ciclo invece di iterare sulla singola stringa itera sui singoli caratteri :D.
è una stupida esagerazione. Se una colonna di database contiene solo interi a che pro devo convertirla in int? Tanto più che la conversione non gestisce le eventuali eccezzioni (in caso di valore null).
Se ci sono eccezioni evidentemente non solo solo interi. Se sono solo interi non devi preoccuparti delle eccezioni :p.
Bah... in dieci anni i progressi sono stati veramente minimi.
Esistono anche altri linguaggi oltre a Java e C# (altrettanto spendibili nel mondo del lavoro magari no, ma questo e' un altro discorso)
Originariamente inviato da gik25
Altro esempio di cose fatte a cazzo: la gestione del raid, la mancanza di una emulazione software della ncs (si chiama così la tecnologia degli hard disk che permette di differire la scrittura di dati?)
Es. copio un file da c: a d: poi inizio a copiare un altro file da c: a d: basterebbe che windows accodasse le due operazioni (a meno che il secondo file non sia molto piccolo) e vedreste in computer andare 60 volte più veloci.
Se usate contemporaneamente 4 programmi più antivirus e servizi di windows L'UNICA cosa che rallenta il computer è il tentativo di svolgere in parallelo i vari comandi di IO costringendo la testina dell'HD a saltare continuamente da un punto all'altro...
E se per risolvere questa cazzatella devo cambiare la gestione a interrupt è ora di iniziare a pensarci. (Ma tanto non serve, basta abbassare la priorità delle cazzate tipo antivirus e servizi e dei programmi che chiedono di usare l'hard disk e sono in background)
Altro esempio i bios dopo diecimila anni ancora con un'interfaccia grafica penosa.
Una coda di scrittura c'è in tutti i SO e filesystem moderni ;) Certo non evita il seek perchè fisicamente al SO una scrittura (o lettura) avviene comunque a blocchi prefissati...se un file è più lungo di un blocco allora è probabile che fra la scrittura/lettura di due blocchi contigui si inserisca un'perazione su un altro file...
Certo, magari questa coda può essere ottimizzata, ma non è così semplice, certe operazioni DEVONO essere effettuate con un ordine preciso... L'unico che può operare queste scelte è l'HD che lo fa in modo trasparente al SO...
^TiGeRShArK^
21-03-2005, 10:38
Originariamente inviato da fek
In un certo senso e' come sperare che esistano tool che una volta dato l'input siano in grado di produrre un quadro: "Ora disegnami la Gioconda"... e lui parte e disegna :)
Scrivere codice e' un processo per moltissimi aspetti creativo e non meccanico, per questo tutti i tentativi sulla strada della generazione automatica del codice sono falliti e molto probabilmente non sono teoricamente possibile.
Sono andato un po' fuori tema? :)
Programmare è un'arte! :O :p ;)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.