Newsgroup: it.comp.lang.visual-basic
Titolo: sti mvp....

Salve ho scritto un messaggio su microsoft..inetsdk.programming.wininet, di
cui riporto il link
http://snipurl.com/9bue
mi ha risposto un certo paul , con qualifica MVP, il quale non ha capito
niente del mio codice.
nonostante che il mio inglese faccia schifo ed io abbia postato il minimo
indispensabile di codice, mi sembra che comunqe le sue deduzioni non siano
giustificabili, quindi vi chiedo :
leggendo il codice condividete la risposta di paul?
grazie.

 leggendo il codice condividete la risposta di paul?
Ha perfettamente ragione per quanto concerne l'allocazione di memoria.
Fare centinaia di migliaia di Redim fa scadere di molto le prestazioni.
Quindi condivido la sua risposta
Altrimenti prova ad utilizzare il controllo Inet (te lo consiglio) e una
bella variabile Variant.
In ultimo puoi usare un controllo webbrowser non visibile nel form e fagli
scaricare il file. In questo modo passi ad IE la gestione dello
scaricamento.
bye
-- 
Esistono 10 tipi di persone: chi conosce il binario e chi no.
"Seminate Linux, che Windows si pianta da sè...." (Antico Adagio)
Gestione Ottica - Gestionale per Ottici e Programmi Gratuiti su:
http://www.nicolaottomano.it
Sinapsi Antispam. Antispam Gratuito.
http://www.nicolaottomano.it/public/SinapsiAntispam-Setup.exe
email spamtrap: 
spam...@nicolaottomano.it

 ha scritto nel messaggio
news:2rlei3F...@uni-berlin.de...

O anch'io ho dei problemi con il tuo inglese oppure devo dire di essere
d'accordo con Paul, che forse poteva darti due consigli in più.
Il tuo approccio è quello di riallocare inutilmente il buffer di lettura,
inoltre su una dimensione inutilmente grande (tieni conto che la Redim
necessita un blocco di memoria contigua, quindi se quella richiesta è troppo
grande richiederà al SO di spostare altra memoria per fare spazio il che non
è molto perormante).
Tu alloca un buffer di un paio di k e nel loop leggi 2 k alla volta finchè
non vedi di essere arrivato alla fine (non conosco la funzione che citi ma
sicuramente ti dirà quanti byte ha letto di quelli richiesti).
Ciao
-- 
NeoDataType : 
http://www.neodatatype.net
Sito Comune : 
http://www.it-lang-vb.net

 grazie.
Ciao,
Andrea
P.S.: Chi mi conosce da un pò sa che spesso con gli MVP mi
scontro... e non in modo leggero.

Innanzitutto grazie per avermi risposto, ci tengo a precisare che io non
intendevo accusare paul di dire "ca**ate"  bensi che causa il mio pessimo
inglese ha interpretato male il post.
Ho notato però che anche chi mi ha risposto mi muove le stesse obiezioni....
Voglio solo far notare che nel codice da me postato la redim avviene solo ed
una sola volta, anzi in concomitanza con condizioni particolarmente
fortunate non aviene affatto.
la variabile lngTotalBytes indica la dimenzione totale dei bytes da
scaricare, quindi nel loop uso l'array aReadBuffer per leggere 1024
(Bytes2Read) bytes per volta.
uso il redim solo se l'ultimo pezzo di file da leggere é minore di quello
scaricato "finnora"  + 1024, quindi se adesempio dovessi scaricare un file
di 4096 bytes la redim non avverrebbe affatto, mentre se il file fosse di
5000 scaricherei quatttro pezzi da 1024 e l'ultimo pezzo (quindi la redim)
da 904 bytes
la variabile lngReadBytes contiene la somma dei bytes letti ad ogni step del
ciclo.
Ciao a tutti.

 (Bytes2Read) bytes per volta.
Dalla parte di codice postato non si capiva questa cosa. Questo ha indotto
tutti noi a credere che la redim venisse chiamata più volte.
e cmq il titolo del post non era molto amichevole...


 bye
hai ragione, l'oggetto del mio post da questa impressione, comunque se
qualcuno volesse intervenire nell'altro thread per spiegare a Paul quello
che io volevo dire, gliene sarei grato per sempre.
ciao!

 (quindi la redim) da 904 bytes
CUT
a me questo torna poco....
ed è un po in contrasto con il concetto di buffer....
un buffer è un buffer!....IMHO non lo dovresti mai ridimensionare....
anche se ci scrivi un byte...il resto...riempilo ("fillalo" di zeri!)
oppure tieni traccia del limite e leggilo fino a quel byte!
mi son preso ALLapi e ho ri-arrangiato appena appena il loro codice di
esempio
Apri un nuovo progetto
un form una textbox multiline un command box
incolla questo:
Option Explicit
Const scUserAgent = "API-Guide test program"
Const INTERNET_OPEN_TYPE_DIRECT = 1
Const INTERNET_OPEN_TYPE_PROXY = 3
Const INTERNET_FLAG_RELOAD = &H80000000
Const sURL = "
http://www.martek.it
"
Private Declare Function InternetOpen Lib "wininet" Alias "InternetOpenA"
(ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As
String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
Private Declare Function InternetCloseHandle Lib "wininet" (ByRef hInet As
Long) As Long
Private Declare Function InternetReadFile Lib "wininet" (ByVal hFile As
Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long,
lNumberOfBytesRead As Long) As Integer
Private Declare Function InternetOpenUrl Lib "wininet" Alias
"InternetOpenUrlA" (ByVal hInternetSession As Long, ByVal lpszUrl As String,
ByVal lpszHeaders As String, ByVal dwHeadersLength As Long, ByVal dwFlags As
Long, ByVal dwContext As Long) As Long
Private Sub Command1_Click()
    'KPD-Team 1999
    'URL: 
http://www.allapi.net/
    'E-Mail: KPD...@Allapi.net
    're-arranged by Wodka40°
    Dim hOpen As Long, hFile As Long, sBuffer As String, Ret As Long
    'Create a buffer for the file we're going to download
    sBuffer = Space(1000)
    'Create an internet connection
    hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_DIRECT,
vbNullString, vbNullString, 0)
    'Open the url
    hFile = InternetOpenUrl(hOpen, sURL, vbNullString, ByVal 0&,
INTERNET_FLAG_RELOAD, ByVal 0&)
    'Read the first 1000 bytes of the file
    Do
        InternetReadFile hFile, sBuffer, 1000, Ret
        DoEvents
        Text1.Text = Text1.Text & sBuffer
        DoEvents
    Loop Until Ret = 0
    'clean up
    InternetCloseHandle hFile
    InternetCloseHandle hOpen
    'Show our file
End Sub
Private Sub Form_Load()
    'KPD-Team 1999
    'URL: 
http://www.allapi.net/
    'E-Mail: KPD...@Allapi.net
End Sub
Saluti!
-- 
Il Wodkino Nazionale è a : 
www.martek.it
Pagina Vb/Bestiario/Lamer Experience :
http://www.martek.it/go.asp?portamia=2
 New Entry nel
bestiario! :-)
---
Messaggio scannerizzato e certificato "Virus free" da AVG free edition.
Checked by AVG anti-virus system (
http://www.grisoft.com
).
Version: 6.0.769 / Virus Database: 516 - Release Date: 24/09/2004

 incolla questo:
[cut]
grazie per il tempo che mi hai dedicato, cmq non č che cambia poi tanto c'č
una redim in meno, il succo
resta quello.
ciao!

 ciao!
Ciao e miao!
:-)
p.s.
La velocità.....
la velocità mi sa che non dipende tanto dall'algoritmo.....quanto dall'api
stessa...
Ho provato  alanciare l'esempio su una pagina ASP con vari Include e link
esterni.....
sto ancora aspettando dopo una settimana che vada a termine il ciclo.....
Ma scusa un sano buon ftp faceva schifo???
oppure un winsocchino di qua e di là ????
-- 
Il Wodkino Nazionale è a : 
www.martek.it
Pagina Vb/Bestiario/Lamer Experience :
http://www.martek.it/go.asp?portamia=2
 New Entry nel
bestiario! :-)
---
Messaggio scannerizzato e certificato "Virus free" da AVG free edition.
Checked by AVG anti-virus system (
http://www.grisoft.com
).
Version: 6.0.771 / Virus Database: 518 - Release Date: 28/09/2004

 ha scritto nel messaggio
news:kcP7d.49921$35.24...@news4.tin.it...

appunto avevo postato sul ng di microsoft proprio per sapere se avessero
qualche dritta su come migliorare le prestazioni dell'api.....
ftp o winsock non vanno bene perchè il tutto deve funzionare con
firewall/proxy....
saluti.