ORDA optimisé avec contexte

À propos de https://doc.4d.com/4Dv17R5/4D/17-R5/Selections-d-entites.300-4163769.fr.html#4279202ce chapitre sur l’optimisation C/S>.
D’après ce que je comprends, si je passe le paramètre context dans un get(laClePrimaine;leContexte), le serveur “apprendra”, d’après ce que je vais demander ensuite, à n’envoyer que les propriétés nécessaires.
Pour tester ça, je boucle sur un tableau de clé primaires :
<code 4D>
$settings_o:=Créer objet(“context”;“monContexte”)
$ms_l:=nombre de millisecondes
Boucle ($i_l;1;Taille tableau($PK))
Si ($avecContexte_b)
$entity_o:=ds.ZE_TABLE.get($PK{$i_l};$settings_o)
Sinon
$entity_o:=ds.ZE_TABLE.get($PK{$i_l})
Fin de si
$p1:=$entity_o.propriete1
$p2:=$entity_o.propriete2
//…
fin de boucle
$ms_l:=nombre de millisecondes-$ms_l
</code 4D>

Bilan : je ne vois pas franchement de différence…
Est-ce que ce mécanisme du contexte n’a de sens que pour une listbox entitySelection ?
Ou je rate autre chose ?
Note : test effectué en client wan, possible aussi que la latence soit telle qu’elle “étouffe” l’optimisation…

Bonjour Arnaud,
Je ne sais pas si tu as lu https://blog.4d.com/use-orda-to-boost-performance-in-client-server-mode/ce blog-post> à ce sujet, il explique également le concept.
Pour résumer, l’optimisation est toujours active en Client-Serveur, que l’on utilise les contextes ou non, et ce sur les listbox de type “entity selection” et dans le code en général, dans des boucles “For” ou “For each” par exemple.
Le système de contexte peut être vu comme une optimisation de l’optimisation : son but est d’éviter la phase d’apprentissage en réutilisant le résultat d’un précédent apprentissage.
Pour avoir effectué pas mal de tests, les gains en performances sont d’autant plus flagrants que les conditions sont difficiles (mauvaise connexion, nombreux enregistrements, nombreux champs dans les tables, etc.).
Cordialement,
Damien