From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from weis@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id IAA31282 for caml-red; Tue, 6 Jun 2000 08:55:07 +0200 (MET DST) Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id TAA21753 for ; Mon, 5 Jun 2000 19:02:45 +0200 (MET DST) Received: from postfix1.free.fr (postfix1.free.fr [212.27.32.21]) by concorde.inria.fr (8.10.0/8.10.0) with ESMTP id e55H2iD26850 for ; Mon, 5 Jun 2000 19:02:44 +0200 (MET DST) Received: from sbuilders.com (paris11-nas6-50-230.dial.proxad.net [212.27.50.230]) by postfix1.free.fr (Postfix) with ESMTP id 1B46D28144; Mon, 5 Jun 2000 19:02:43 +0200 (MEST) Message-ID: <393BDC32.6EA0D741@sbuilders.com> Date: Mon, 05 Jun 2000 18:58:26 +0200 From: Maxence Guesdon Reply-To: max@sbuilders.com X-Mailer: Mozilla 4.72 [fr] (X11; U; Linux 2.2.14-5.0 i586) X-Accept-Language: fr, en MIME-Version: 1.0 To: Pascal Brisset , caml list Subject: Re: OCamlODBC References: <393A36F1.4ECC0657@sbuilders.com> <200006051535.RAA02366@cerbere.sbuilders.com> Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Sender: weis Bonjour, > > I'm pleased to announce OCamlODBC 1.0, an OCaml library that you can use > > Les performances sont-elles satisfaisantes ? J'ai été très déçu par > l'accès à MySQL par la bibliothèque ODBC d'un autre langage > fonctionnel (60 requêtes/s, contre 1200 avec /usr/bin/mysql > exécutant un script). Je ne sais pas si c'était dû au langage, > à la bibliothèque, à iodbc ou à mysqlodbc. Je n'ai pas réellement fait de test de performance. J'ai exécuté quelques centaines de requêtes à la suite et la vitesse convenait à mes besoins. Cependant, l'utilisation avec MySQL s'est révélée beaucoup, beaucoup plus rapide qu'avec Open Ingres, sans doute une question de driver ODBC. D'autre part, comme vous pourrez le voir, la bibliothèque fournit deux fonctions d'exécution de requête (execute et execute_2). La première (execute) tente de ramener tous les enregistrements résultats et ensuite de construire la liste de listes OCaml. Hum, hum, c'est vraiment pas bon quand il y a beaucoup de résultats car : 1- cela prend beaucoup de mémoire 2- même avec quelques options qui vont bien pour le GC (notamment réserver quelques dizaines de Mega), ça prend beaucoup de temps. D'où la fonction execute_2, qui récupère quelques enregistrements, construit la liste de listes, récupère d'autres enregistrements, les ajoute à la liste et ainsi de suite. C'est mieux car le GC à l'occasion de faire ses choses en mémoire, mais sur les requêtes qui retournent beaucoup de données c'est encore un peu lent (voire lent tout court !). Pour l'instant je me sers surtout de la base de données pour (surprise !) stocker des données et les lire, disons au rythme de l'utilisateur car ce sont surtout ses clics qui déclenchent quelques mises à jour par-ci par-là. Faites-moi savoir si vous faites quelques tests de performance... Cordialement, MG