From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on yquem.inria.fr X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=disabled version=3.1.3 X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from discorde.inria.fr (discorde.inria.fr [192.93.2.38]) by yquem.inria.fr (Postfix) with ESMTP id 98B9BBC0A for ; Mon, 4 Jun 2007 15:33:07 +0200 (CEST) Received: from dorado.vub.ac.be (mailhost.vub.ac.be [134.184.129.10]) by discorde.inria.fr (8.13.6/8.13.6) with ESMTP id l54DX7Me021381 for ; Mon, 4 Jun 2007 15:33:07 +0200 Received: from exchange.etro.vub.ac.be (etro10.vub.ac.be [134.184.2.10]) by dorado.vub.ac.be (Postfix) with ESMTP id F0675670 for ; Mon, 4 Jun 2007 15:33:06 +0200 (CEST) Received: from ssel.vub.ac.be ([10.0.4.37]) by exchange.etro.vub.ac.be with Microsoft SMTPSVC(6.0.3790.3959); Mon, 4 Jun 2007 15:33:06 +0200 Received: from localhost (localhost.localdomain [127.0.0.1]) by ssel.vub.ac.be (Postfix) with ESMTP id A3C5C2468101 for ; Mon, 4 Jun 2007 15:33:06 +0200 (CEST) X-Virus-Scanned: amavisd-new at ssel.vub.ac.be Received: from ssel.vub.ac.be ([127.0.0.1]) by localhost (ssel.vub.ac.be [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id X1p-mWKpj2F9 for ; Mon, 4 Jun 2007 15:32:59 +0200 (CEST) Received: from [10.0.4.145] (unknown [10.0.4.145]) by ssel.vub.ac.be (Postfix) with ESMTP id 02F2324680F6 for ; Mon, 4 Jun 2007 15:32:59 +0200 (CEST) Mime-Version: 1.0 (Apple Message framework v752.3) In-Reply-To: <05F057DE-3838-47A7-9ECC-813057C0BB9F@vub.ac.be> References: <05F057DE-3838-47A7-9ECC-813057C0BB9F@vub.ac.be> Content-Type: multipart/mixed; boundary=Apple-Mail-14-793311643 Message-Id: <4AD44E18-F634-47FA-BC34-6AD100AB615B@vub.ac.be> From: Bruno De Fraine Subject: Re: [Caml-list] plc, a One-Day Prolog Compiler Date: Mon, 4 Jun 2007 15:32:54 +0200 To: caml-list ml X-Mailer: Apple Mail (2.752.3) X-OriginalArrivalTime: 04 Jun 2007 13:33:06.0758 (UTC) FILETIME=[E279FE60:01C7A6AC] X-Miltered: at discorde with ID 46641493.000 by Joe's j-chkmail (http://j-chkmail . ensmp . fr)! X-Spam: no; 0.00; compiler:01 vastly:01 timings:01 macos:01 ocamlopt:01 cmx:01 cmx:01 ocamlopt:01 -pp:01 cmo:01 impl:01 universiteit:01 vub:98 plc:98 plc:98 X-Attachments: type="text/x-perl-script" name="prolog.pl" name="prolog.pl" type="application/octet-stream" name="driver.ml" name="driver.ml" --Apple-Mail-14-793311643 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed An addendum to my previous message: Some preliminary benchmarks indicate that plc is a vastly faster execution platform than tried-and-tested (and optimized) Prolog engines such as SWI Prolog and Sicstus Prolog (although it currently only supports a restricted language). For my example program, it is almost 12x faster than SWI and 3.7x faster than Sicstus. Some details: solving the win-predicate in the attached Prolog-file causes a search in the space of all six-letter words (i.e. 26^6 strings); it reports those words that are "prolog". I collected the following timings on my computer (Intel Core 2 Duo, MacOS X 10.4.9): SWI-Prolog (Multi-threaded, Version 5.6.10): $ time swipl -s prolog.pl -g true -t "win(A,B,C,D,E,F),write ([A,B,C,D,E,F]),nl,fail" % prolog.pl compiled 0.00 sec, 4,280 bytes [p, r, o, l, o, g] real 0m59.065s user 0m58.845s sys 0m0.073s SICStus 4.0.1: $ time ~/sicstus/bin/sicstus -f -l prolog.pl --goal "win (A,B,C,D,E,F),write([A,B,C,D,E,F]),nl,fail;halt." % compiling /Users/bruno/my_svn/plc/prolog.pl... % compiled /Users/bruno/my_svn/plc/prolog.pl in module user, 0 msec 2312 bytes SICStus 4.0.1 (i386-darwin-8.9.1): Tue May 15 14:53:23 CEST 2007 Licensed to Bruno De Fraine [p,r,o,l,o,g] real 0m18.474s user 0m18.417s sys 0m0.038s plc and ocamlopt 3.09.3: $ time { make prolog.cmx; make driver.cmx; ocamlopt -o driver.opt prolog.cmx driver.cmx; ./driver.opt; } ocamlopt.opt -c -dtypes -pp 'camlp4 ./plc.cma pr_dump.cmo -impl' - impl prolog.pl ocamlopt.opt -c -dtypes driver.ml prolog real 0m5.069s user 0m4.749s sys 0m0.191s Regards, Bruno --Apple-Mail-14-793311643 Content-Transfer-Encoding: 7bit Content-Type: text/x-perl-script; x-unix-mode=0644; name=prolog.pl Content-Disposition: attachment; filename=prolog.pl letter(a). letter(b). letter(c). letter(d). letter(e). letter(f). letter(g). letter(h). letter(i). letter(j). letter(k). letter(l). letter(m). letter(n). letter(o). letter(p). letter(q). letter(r). letter(s). letter(t). letter(u). letter(v). letter(w). letter(x). letter(y). letter(z). winner(p,r,o,l,o,g). win(A,B,C,D,E,F) :- letter(A), letter(B), letter(C), letter(D), letter(E), letter(F), winner(A,B,C,D,E,F). --Apple-Mail-14-793311643 Content-Transfer-Encoding: 7bit Content-Type: application/octet-stream; x-unix-mode=0644; name=driver.ml Content-Disposition: attachment; filename=driver.ml let soa = Prolog.string_of_atom ;; Prolog.win_oooooo (fun a b c d e f -> print_endline ((soa a) ^ (soa b) ^ (soa c) ^ (soa d) ^ (soa e) ^ (soa f)) ) ;; --Apple-Mail-14-793311643 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed -- Bruno De Fraine Vrije Universiteit Brussel Faculty of Applied Sciences, DINF - SSEL Room 4K208, Pleinlaan 2, B-1050 Brussels tel: +32 (0)2 629 29 75 fax: +32 (0)2 629 28 70 e-mail: Bruno.De.Fraine@vub.ac.be --Apple-Mail-14-793311643--