-
[Java] pippe mentaliDato il seguente codice da me medesimo manoscritto e che vi rilascio sotto WTFPL:
public static void wtfAreYouDoing( InputStream in, OutputStream out) throws IOException { byte[] buffer = new byte[65536]; int len; while ((len=in.read(buffer,0,buffer.length)) != -1) out.write(buffer,0,len); }
Esiste un modo più efficiente di farlo?
La dimensione del buffer come la valutate?
Mi sono basato su quello che lessi qualche mese fa in un libro in cui dice che la L1 delle CPU moderne è almeno di 64k o suoi multipli.-
Re: [Java] pippe mentali
- Scritto da: Svyatopolk
> Esiste un modo più efficiente di farlo?
Java nio pipe
? Mi pare di averle usate taaaanto tempo fa, ma non mi ricordo piu'
> La dimensione del buffer come la valutate?
1024, come sta scritto negli esempi di K&R
Dai un'occhiata all'implementazione di http://commons.apache.org/io/api-release/org/apach...
magari trovi qualcosa di interessante ...
> Mi sono basato su quello che lessi qualche mese
> fa in un libro in cui dice che la L1 delle CPU
> moderne è almeno di 64k o suoi
> multipli.
Se riempi la L1 con il tuo buffer, non rimane piu' spazio per altro -> Il codice rallenta
...
`"la realta' non e' cosi' terrificante come vogliono farti credere" - Giambo ` - Wakko che cita Giambo-
Re: [Java] pippe mentali- Scritto da: Giambo
>
> - Scritto da: Svyatopolk
>
> > Esiste un modo più efficiente di farlo?
>
> Java nio pipe
? Mi pare di averle usate
> taaaanto tempo fa, ma non mi ricordo
> piu'
>
> > La dimensione del buffer come la valutate?
>
> 1024, come sta scritto negli esempi di K&R
> Dai un'occhiata all'implementazione di
> http://commons.apache.org/io/api-release/org/apach
>
> > Mi sono basato su quello che lessi qualche mese
> > fa in un libro in cui dice che la L1 delle CPU
> > moderne è almeno di 64k o suoi
> > multipli.
>
> Se riempi la L1 con il tuo buffer, non rimane
> piu' spazio per altro -> Il codice rallenta
> ...
Sempre detto che ospiti un mirror di apache.org
in casa tua. 
This method buffers the input internally, so there is no need to use a BufferedInputStream.
Era esattamente quello che volevo evitare, java mi sembra un carrozzone da questo punto di vista.
Edit: non si capiva molto, consufava il lettore.
-----------------------------------------------------------
Modificato dall' autore il 06 dicembre 2010 11.17
------------------------------------------------------------
Re: [Java] pippe mentali
- Scritto da: Svyatopolk
> Sempre detto che ospiti un mirror di apache.org
> in casa tua.
>
Controlla a che nome e' registrato apache.org

<bluff/>
> This method buffers the input internally, so
> there is no need to use a BufferedInputStream.
>
> Era esattamente quello che volevo evitare, java
> mi sembra un carrozzone da questo punto di
> vista.
Puoi usare un buffer variabile, usando un algoritmo simile a slow-start di TCP
No, seriamente: Se necessiti di performace, magari java.nio.channels puo' veramente essere la tua Mano Amica ...`"la realta' non e' cosi' terrificante come vogliono farti credere" - Giambo ` - Wakko che cita Giambo-
Re: [Java] pippe mentali
- Scritto da: Giambo
>
> - Scritto da: Svyatopolk
>
> > Sempre detto che ospiti un mirror di apache.org
> > in casa tua.
> >
>
> Controlla a che nome e' registrato apache.org

>
> <bluff/>
>
> > This method buffers the input internally, so
> > there is no need to use a BufferedInputStream.
> >
> > Era esattamente quello che volevo evitare, java
> > mi sembra un carrozzone da questo punto di
> > vista.
>
> Puoi usare un buffer variabile, usando un
> algoritmo simile a slow-start di TCP
>
>
> No, seriamente: Se necessiti di performace,
> magari java.nio.channels puo' veramente essere la
> tua Mano Amica
> ...
Sembra di no(i file vanno da 1k a 160mb):
http://pastebin.com/vPtBarPa
-
Re: [Java] pippe mentali
- Scritto da: Svyatopolk
> Sembra di no(i file vanno da 1k a 160mb):
> http://pastebin.com/vPtBarPa
Interessante ... Certo che ne hai di tempo da buttare via
!
Conclusione ? Qual'e' il miglior trade-off, Apache
?
`"la realta' non e' cosi' terrificante come vogliono farti credere" - Giambo ` - Wakko che cita Giambo
-
-
-
-
-
Re: [Java] pippe mentaliScritto dagengivaUtente privileggiatoil 2010-12-06 11:28:00.0 alle 2010-12-06 11:28:00.0Trollate totali: 9100
- Scritto da: Svyatopolk
> Dato il seguente codice da me medesimo
> manoscritto e che vi rilascio sotto
> WTFPL:
>> public static void wtfAreYouDoing( > InputStream in, OutputStream out) > throws IOException { > byte[] buffer = new byte[65536]; > int len; > while ((len=in.read(buffer,0,buffer.length)) > != > -1) > out.write(buffer,0,len); > } >
>
> Esiste un modo più efficiente di farlo?
> La dimensione del buffer come la valutate?
> Mi sono basato su quello che lessi qualche mese
> fa in un libro in cui dice che la L1 delle CPU
> moderne è almeno di 64k o suoi
> multipli.
Io sono attratto dal nome del metodo che stai usando! applausi
Cercatelo con Google, ritardato! ©
-