From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: caml-list@sympa.inria.fr Delivered-To: caml-list@sympa.inria.fr Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by sympa.inria.fr (Postfix) with ESMTPS id 76E727F787 for ; Tue, 8 Nov 2016 11:10:20 +0100 (CET) Authentication-Results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=goswin-v-b@web.de; spf=Pass smtp.mailfrom=goswin-v-b@web.de; spf=None smtp.helo=postmaster@mout.web.de Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of goswin-v-b@web.de) identity=pra; client-ip=212.227.15.3; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="goswin-v-b@web.de"; x-sender="goswin-v-b@web.de"; x-conformance=sidf_compatible Received-SPF: Pass (mail2-smtp-roc.national.inria.fr: domain of goswin-v-b@web.de designates 212.227.15.3 as permitted sender) identity=mailfrom; client-ip=212.227.15.3; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="goswin-v-b@web.de"; x-sender="goswin-v-b@web.de"; x-conformance=sidf_compatible; x-record-type="v=spf1" Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@mout.web.de) identity=helo; client-ip=212.227.15.3; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="goswin-v-b@web.de"; x-sender="postmaster@mout.web.de"; x-conformance=sidf_compatible IronPort-PHdr: =?us-ascii?q?9a23=3AaNH3thKI7D3bHMDiStmcpTZWNBhigK39O0sv0rFi?= =?us-ascii?q?tYgULPTxwZ3uMQTl6Ol3ixeRBMOAuqgC2red6vqwEUU7or+5+EgYd5JNUxJXwe?= =?us-ascii?q?43pCcHRPC/NEvgMfTxZDY7FskRHHVs/nW8LFQHUJ2mPw6anHS+4HYoFwnlMkIt?= =?us-ascii?q?f6KuS9SU3pn8jrris7ToICxwzAKnZr1zKBjk5S7wjeIxxbVYF6Aq1xHSqWFJce?= =?us-ascii?q?kFjUlhJFaUggqurpzopM0roGxsvKcK99RBSrn9Z6RwbesPAzk8ezQ+5NfqrgXE?= =?us-ascii?q?VQvJ5nwRXWgMugZVRgLI9hX7WNH9v32pmPB63Xy1OtbpTLZ8RzOkp41xRRPlki?= =?us-ascii?q?MAKHZt/2bMlc12ybweqjq+qhY5z4OCM9LdD+Z3Yq6IJYBSfmFGRMsEDyE=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0AsAACQoyFYhwMP49RdGgEBAQECAQEBA?= =?us-ascii?q?QgBAQEBFgEBAQMBAQEJAQEBgwQBAQEBAaYxjBWIPoIIhiQCghJAEwEBAQEBAQE?= =?us-ascii?q?BAQEBEgEBAQgNCQkdMIIzGIIXAQEEJxM/EAsYCSUPBSghiFQBHrQTUocNH4QcA?= =?us-ascii?q?QEBAQYBAQEBASKLE4d4gi8Fmi6QPIl1CoYgjS2EBh8BgUqDJ4FpiCsBAQE?= X-IPAS-Result: =?us-ascii?q?A0AsAACQoyFYhwMP49RdGgEBAQECAQEBAQgBAQEBFgEBAQM?= =?us-ascii?q?BAQEJAQEBgwQBAQEBAaYxjBWIPoIIhiQCghJAEwEBAQEBAQEBAQEBEgEBAQgNC?= =?us-ascii?q?QkdMIIzGIIXAQEEJxM/EAsYCSUPBSghiFQBHrQTUocNH4QcAQEBAQYBAQEBASK?= =?us-ascii?q?LE4d4gi8Fmi6QPIl1CoYgjS2EBh8BgUqDJ4FpiCsBAQE?= X-IronPort-AV: E=Sophos;i="5.31,609,1473112800"; d="scan'208";a="244053007" Received: from mout.web.de ([212.227.15.3]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 08 Nov 2016 11:10:20 +0100 Received: from frosties.localnet ([78.43.233.192]) by smtp.web.de (mrweb001) with ESMTPSA (Nemesis) id 0MC1RI-1bvDfV2Uym-008npm; Tue, 08 Nov 2016 11:10:17 +0100 Received: from mrvn by frosties.localnet with local (Exim 4.87) (envelope-from ) id 1c43M8-0004wl-T7; Tue, 08 Nov 2016 11:10:16 +0100 Date: Tue, 8 Nov 2016 11:10:16 +0100 From: Goswin von Brederlow To: Christoph H??ger Cc: caml-list@inria.fr Message-ID: <20161108101015.GC18517@frosties> References: <390aa113-a9eb-fce0-fe03-6a904ad053dd@tu-berlin.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.6.0 (2016-04-01) X-Provags-ID: V03:K0:o+/gJ5OKm4s+0SdN20NO3pH3MjFrlAIGaESiojnC6deTNjDiJBg oLxhnoIJpsFsGYGnzriCd2Le+o41S2YSj6uvWWVRkdvqS6tV8cpOY5hTVD1r30H2s/VHWsr IlHpNP8EjnTbXwwvjYX9PjIWmvCh4vakv5uAy4RDfT/xk6TgGKq29jkUYhQ48bQYpCx2jPu V9TIZz9Sx/Q7Tnot0u/cw== X-UI-Out-Filterresults: notjunk:1;V01:K0:MHmkSlGSTrY=:mXJ7EWkRnN6HlplHpHzUKp k4WDJ6zyjpXnH4uD8lsDOPVFpTyqTI6aG1NvpBhLdGf5OK2QqNKTOBZmDXxoBmjYKoXOrZKjZ rK2L40pE1WJADmpFpz96I32MdaEUoSu2tv2T7vxP542MhAtidXvV0Wd++DuXTQOxdGr5WRvj9 X74Ph8o8RJhKst5PKnh/j8HwwKLIYpKN9K5tEgBIQr3LTrRH1hHDNvVKBzBWMeFvssEeGgdbZ 9vWiuWY6boay0YRMn/7wHK6GGOU/YUeYmlzKcYgGEiHT7X1jGplPMgYqnoTSHWxKTDdFTvGwy dGfulm1NZXnwMxhwRtI+fFeS5ieG3YvLiQYMmN9OAxHhM4zZcODGai2+NSMTEtGBMWF/iaIdo 4q2H4BTcRtaSfGrPyCzn4uZWtBwmjcPBanLtFe9mGGb8YBVuAlj+0FGpXI0EkCti5iScXUD47 eYJsPbS3CwLk9R0NdNj7oz4jzDUlbEV7Njd6Sc8liAqBgIA7Uz3luLZCGrJ07iQFcVeoLTgi+ XvFSpTpiuSIiRF5x8wJTlsqvemDhsgdkSmEEKsNKJim5H6DqvGFELWSdNfN1C6nromGDDbvtz nhulXxQJs8MFi1Zocysxnqq0kXIKqoY8g/yHwhug6Wtbjt+22B36e1kARS94ILu3tsfkJqyfp cpV+NRPg4jGPLrbBLDGqIqJoM9gmbxYCxU/VwFkx4dY2MW0OT/o3bcv8blNdUWxrLlxd4Ol4l BunKiYzF4MZhaOM/QzMcZ84Ap1HMynsj2t7nRnq5XL/LULKyEdYrrpl/5k8= Subject: Re: [Caml-list] Compile-time performance problem On Tue, Nov 08, 2016 at 09:56:33AM +0100, Christoph H??ger wrote: > let (<+) a v = Array.append a [|v|] > let foo k s = > ((fun k -> fun s -> (k#_continue_ (object (self) end)) 1) > (object (self) > val _continue_ = > fun x -> > (fun k -> > fun s -> > ((fun k -> fun s -> (k#_continue_ (object (self) end)) 2) ... Do you have to use objects there? Does the problem go away if you use a simple type for the continuation? The thing with CPS is that your code can be converted into simple jumps instead of function calls. Everything is a tail call. And all your objects are dummies that can be optimized away if you try hard enough. Really complex dummies. I can imagine the bytecode simply creates the objects and calls the methods while the native code optimizes it all away. Hard to say if that is linear (and really slow), quadratic or exponential with just one example though. MfG Goswin