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.