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=AWL autolearn=disabled version=3.1.3 X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by yquem.inria.fr (Postfix) with ESMTP id AD5FFBC6C for ; Thu, 7 Feb 2008 15:12:47 +0100 (CET) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AlwPAH6gqkfUnw7Va2dsb2JhbACCN417CwQGBwkSB5to X-IronPort-AV: E=Sophos;i="4.25,316,1199660400"; d="scan'208";a="7054044" Received: from ptb-relay02.plus.net ([212.159.14.213]) by mail2-smtp-roc.national.inria.fr with ESMTP; 07 Feb 2008 15:12:47 +0100 Received: from [80.229.56.224] (helo=beast.local) by ptb-relay02.plus.net with esmtp (Exim) id 1JN7Uc-0001RO-Do for caml-list@yquem.inria.fr; Thu, 07 Feb 2008 14:12:46 +0000 From: Jon Harrop Organization: Flying Frog Consultancy Ltd. To: caml-list@yquem.inria.fr Subject: Re: [Caml-list] OCaml image blending performance Date: Thu, 7 Feb 2008 14:08:31 +0000 User-Agent: KMail/1.9.7 References: <854c25eb0802061229o34a6155dncca9d8492cfe6932@mail.gmail.com> <854c25eb0802070607t4b2ed641xa3bc19e8384ce23@mail.gmail.com> <854c25eb0802070610t1e050875y10de0092f9eb7c4e@mail.gmail.com> In-Reply-To: <854c25eb0802070610t1e050875y10de0092f9eb7c4e@mail.gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200802071408.31568.jon@ffconsultancy.com> X-Plusnet-Relay: 8638fbf772569d81fb1e65ddcaf3a40c X-Spam: no; 0.00; ocaml:01 inlining:01 hofs:01 hackery:01 ocaml:01 ocaml's:01 frog:98 wrote:01 wrote:01 inline:01 caml-list:01 macros:01 macros:01 algorithms:03 float:03 On Thursday 07 February 2008 14:10:22 Ilmari Heikkinen wrote: > On Feb 7, 2008 1:34 AM, Jon Harrop wrote: > > In this case, most of the speed loss can be regained by simply > > aggressively inlining everything, which is exactly what you (ab)used C > > macros for in the C code. > > The C macros were more about making the code shorter by emulating HOFs, > blend2.ml does inline everything. Coming within 2x of C with no major > hackery on this sort of code is impressive though. Getting within 2x of C is often regarded as disappointing in the OCaml community. :-) I've played with some similar int-intensive algorithms and never managed to get close to C. OCaml's float performance is where it really shines. -- Dr Jon D Harrop, Flying Frog Consultancy Ltd. http://www.ffconsultancy.com/products/?e