From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from majordomo@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id KAA11578; Thu, 28 Jun 2001 10:35:06 +0200 (MET DST) X-Authentication-Warning: pauillac.inria.fr: majordomo set sender to owner-caml-list@pauillac.inria.fr using -f 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 KAA11577 for ; Thu, 28 Jun 2001 10:35:05 +0200 (MET DST) Received: from dpt-info.u-strasbg.fr (dpt-info.u-strasbg.fr [130.79.6.1]) by concorde.inria.fr (8.11.1/8.10.0) with ESMTP id f5S8Z4r13283 for ; Thu, 28 Jun 2001 10:35:04 +0200 (MET DST) Received: from lambda.u-strasbg.fr (mail@lambda.u-strasbg.fr [130.79.90.63]) by dpt-info.u-strasbg.fr (8.9.3/8.9.3) with ESMTP id KAA18485; Thu, 28 Jun 2001 10:34:00 +0200 Received: from luther by lambda.u-strasbg.fr with local (Exim 3.22 #1 (Debian)) id 15FXGH-0001cM-00; Thu, 28 Jun 2001 10:34:53 +0200 Date: Thu, 28 Jun 2001 10:34:53 +0200 To: Florian Hars Cc: caml-list@inria.fr Subject: Re: [Caml-list] Where does Ocaml spend all the time? Message-ID: <20010628103453.A6217@lambda.u-strasbg.fr> References: <20010628101635.A25747@hars> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20010628101635.A25747@hars> User-Agent: Mutt/1.3.18i From: Sven LUTHER Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk On Thu, Jun 28, 2001 at 10:16:35AM +0200, Florian Hars wrote: > I have written an ocaml program, which is about an order of magnitude > slower than a similar C program, and now I am wondering what to do. > According to gprof, I have neiter written nor called most of the > top-scoring functions in my program: > > % cumulative self self total > time seconds seconds calls ms/call ms/call name > 9.82 2.76 2.76 9822122 0.00 0.00 Verzeichnis_code_end > 9.00 5.29 2.53 3275 0.77 0.77 mark_slice > 8.15 7.58 2.29 17860 0.13 0.54 Stra$dfen_e_i_l_rec_129 > 8.04 9.84 2.26 23232718 0.00 0.00 string_equal > 7.44 11.93 2.09 4088 0.51 0.62 sweep_slice > 5.73 13.54 1.61 390646 0.00 0.01 oldify > 4.16 14.71 1.17 22241546 0.00 0.00 Eintrag_code_begin > 3.88 15.80 1.09 Stringhilfsfunktionen_code_begin > > Only the third and fourth entry seem to do anything "useful", the rest > looks like administrative overhead to me. What are these functions > doing? > Are there any general hints on how to write ocaml programs for efficiency? > Like, don't use functional updates for records to reduce garbage? mmm, i am no expert, but the mark_slice and sweep_slice seems like garbage_collector stuff. I think there is a faq entry about efficiency and other such things, in particular you have to know, please someone correct me if i am wrong, that the updating of a reference or a mutable field can trigger a garbage collection. Also ocaml is highly optimized for functional datatypes and curryified function calls. Maybe this helps. Friendly, Sven Luther ------------------- Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr