Le
3 avril, je fis un test, avec ma table "Codes
postaux",
de 40 000 enregistrements.
Le test consista à envoyer, en paramètre(s), le contenu de chaque
enregistrement de la table (avec un tcursor), à PONX.
Pour cela, j'utilisai la procédure Object-Pal suivante :
proc PETcursor(var t tcursor) ; Ponx Envoi Tcursor
var
i smallint
endvar
oa.PxE()
for i from 1 to t.nFields()
oa.PxE(t.(i))
endfor
endproc
Le script de test lui-même contint les lignes suivantes :
tc.open("CpVilles.db")
tc.setbatchon()
scan tc:
PETcursor(tc)
endscan
Le résultat fut : 15 secondes pour 40 000 enregistrements, soit 2666
enregistrements par secondes. La table fut composée de trois champs
: longint, A5, A40. La machine fonctionna à 1,2 GHz, sous W2K.
Détail complémentaire : avec mémorisation en persistance locale (PERSIST), on passe à 25 secondes, soit 1600 enregistrements par seconde.
Par contre, lorsque je fais de la télé-persistance locale (c'est à dire en passant par TCP/IP), je descend à 83 enregistrements par seconde. Mais, bien sûr, l'usage est assez différent.
Et
on descend à 2,5 enregistrements par seconde, en télé-persistance, à travers
un réseau local (Wi-Fi, 802-11b, 11 Mbd).
MAIS, si je sérialise les enregistrements, cela va beaucoup
plus vite. En groupant les enregistrements par blocs de 5000 (enregistrements),
on revient à 990 enregistrements pas seconde (toujours à travers
le réseau local Wi-Fi).
Donc, il y a une latence certaine, lors de la composition des messages
TCP/IP.
A savoir à l'usage.