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 96C1A7F787 for ; Mon, 7 Nov 2016 18:01:27 +0100 (CET) Authentication-Results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=christoph.hoeger@tu-berlin.de; spf=None smtp.mailfrom=christoph.hoeger@tu-berlin.de; spf=None smtp.helo=postmaster@mail.tu-berlin.de Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of christoph.hoeger@tu-berlin.de) identity=pra; client-ip=130.149.7.33; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="christoph.hoeger@tu-berlin.de"; x-sender="christoph.hoeger@tu-berlin.de"; x-conformance=sidf_compatible Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of christoph.hoeger@tu-berlin.de) identity=mailfrom; client-ip=130.149.7.33; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="christoph.hoeger@tu-berlin.de"; x-sender="christoph.hoeger@tu-berlin.de"; x-conformance=sidf_compatible Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@mail.tu-berlin.de) identity=helo; client-ip=130.149.7.33; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="christoph.hoeger@tu-berlin.de"; x-sender="postmaster@mail.tu-berlin.de"; x-conformance=sidf_compatible IronPort-PHdr: =?us-ascii?q?9a23=3AMwSbXBFoMyF9MpkFQeNLDp1GYnF86YWxBRYc798d?= =?us-ascii?q?s5kLTJ76rsuwAkXT6L1XgUPTWs2DsrQf2rCQ4vyrCTxIoc7Y9itdINoUD15NoP?= =?us-ascii?q?5VtjJjKfbNMVf8Iv/uYn5yN+V5f3ghwUuGN1NIEt31fVzYry76xzcTHhLiKVg9?= =?us-ascii?q?fbytScaBx/iwguu7/pmbfh5FniH1Nbh7KRHzqQTKquEXh5FjI+A/0E2ajGFPfr?= =?us-ascii?q?F9xXlpPk6UhxbLxlm/8YQrpy9QofM668lYUeP6eKk3QKZwECljOW0v4Mzt8xXO?= =?us-ascii?q?G1jcrkAAW3kbx0IbSzPO6wv3C8/8?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0CHAAAssiBYhyEHlYJdHgYMGQYMgwMBA?= =?us-ascii?q?QEBAXcqUrkMggghhgOCC0ATAQEBAQEBAQEBAQESAQEBCgsJCR0wgjMYgkAEgS8?= =?us-ascii?q?CBFsNBgIBAYhUBKFSj3qBblKLWA6IOwiHLoI1Cy2CXAWaJ4NLgXlxjEuHNoYek?= =?us-ascii?q?TAgAYRwgWlxh0oBAQE?= X-IPAS-Result: =?us-ascii?q?A0CHAAAssiBYhyEHlYJdHgYMGQYMgwMBAQEBAXcqUrkMggg?= =?us-ascii?q?hhgOCC0ATAQEBAQEBAQEBAQESAQEBCgsJCR0wgjMYgkAEgS8CBFsNBgIBAYhUB?= =?us-ascii?q?KFSj3qBblKLWA6IOwiHLoI1Cy2CXAWaJ4NLgXlxjEuHNoYekTAgAYRwgWlxh0o?= =?us-ascii?q?BAQE?= X-IronPort-AV: E=Sophos;i="5.31,606,1473112800"; d="asc'?ml'?scan'208";a="243955678" Received: from mail.tu-berlin.de ([130.149.7.33]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 07 Nov 2016 18:01:26 +0100 X-tubIT-Incoming-IP: 91.66.22.179 Received: from ip5b4216b3.dynamic.kabel-deutschland.de ([91.66.22.179] helo=[192.168.178.42]) by mail.tu-berlin.de (exim-4.84_2/mailfrontend-8) with esmtpa for id 1c3nIS-000080-m3; Mon, 07 Nov 2016 18:01:25 +0100 To: caml users From: =?UTF-8?Q?Christoph_H=c3=b6ger?= Organization: =?UTF-8?Q?Technische_Universit=c3=a4t_Berlin?= Message-ID: Date: Mon, 7 Nov 2016 18:01:24 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="KBv37JNoTfmxGxXdvDofR75JJQMniQVtd" X-PMX-Version: 6.0.0.2142326, Antispam-Engine: 2.7.2.2107409, Antispam-Data: 2016.11.7.165416 X-PMX-Spam: Gauge=IIIIIII, Probability=0%, Report='' Subject: [Caml-list] Compile-time performance problem This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --KBv37JNoTfmxGxXdvDofR75JJQMniQVtd Content-Type: multipart/mixed; boundary="gkGGL0DwpKfjvQlKMArFslSbCAsuwolto"; protected-headers="v1" From: =?UTF-8?Q?Christoph_H=c3=b6ger?= To: caml users Message-ID: Subject: Compile-time performance problem --gkGGL0DwpKfjvQlKMArFslSbCAsuwolto Content-Type: multipart/mixed; boundary="------------7780D9F40A4A554872BDF5D7" This is a multi-part message in MIME format. --------------7780D9F40A4A554872BDF5D7 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Dear all, I have some (autogenerated) code that (naively) implements a function in CPS. To give you an idea: continuations are wrapped in objects with a _continue_ field. Functions take an argument k, which is the next continuation and s, which depicts a monadic state. The whole file is generated from the following input: let foo =3D do put 1 ; put 2 ; put 3 ; put 4 ; put 5 ; put 6 ; put 7 ; put 8 Here, put n means: Set the monadic state to n. The semicolon is interpreted as the monadic bind operator (without actually binding a variable in that simple case). Due to the cps nature, I compile as follows (compilation in brackets [| .. |]): [| m1 ; m2 |] =3D^=3D (fun k s -> [|m1|] (object val _continue_ fun x -> [|m2|]; ... end) (The with_continue and continue methods are intended to mimic structural records) When I compile to bytecode, it just works (TM). When I compile to machine-code, the compilation time grows very fast: choeger@oxide /tmp % ocamlopt -dtimings perf.ml all: 1.284s parsing(perf.ml): 0.001s typing(perf.ml): 0.012s transl(perf.ml): 0.011s generate(perf.ml): 1.238s cmm(sourcefile(perf.ml)): 0.000s compile_phrases(sourcefile(perf.ml)): 0.042s selection(sourcefile(perf.ml)): 0.005s comballoc(sourcefile(perf.ml)): 0.000s cse(sourcefile(perf.ml)): 0.003s deadcode(sourcefile(perf.ml)): 0.001s spill(sourcefile(perf.ml)): 0.006s split(sourcefile(perf.ml)): 0.002s liveness(sourcefile(perf.ml)): 0.005s regalloc(sourcefile(perf.ml)): 0.016s linearize(sourcefile(perf.ml)): 0.000s scheduling(sourcefile(perf.ml)): 0.000s emit(sourcefile(perf.ml)): 0.003s assemble(sourcefile(perf.ml)): 0.000s selection(startup): 0.002s comballoc(startup): 0.000s cse(startup): 0.001s deadcode(startup): 0.000s spill(startup): 0.002s split(startup): 0.001s liveness(startup): 0.002s regalloc(startup): 0.006s linearize(startup): 0.000s scheduling(startup): 0.000s emit(startup): 0.001s assemble(startup): 0.000s The generate part is the culprit. Is there any known performance regression in 4.03.0 that could explain this? Is it the (admittedly naive) style of the continuations that causes this? thanks, Christoph --=20 Christoph H=C3=B6ger Technische Universit=C3=A4t Berlin Fakult=C3=A4t IV - Elektrotechnik und Informatik =C3=9Cbersetzerbau und Programmiersprachen Sekr. TEL12-2, Ernst-Reuter-Platz 7, 10587 Berlin Tel.: +49 (30) 314-24890 E-Mail: christoph.hoeger@tu-berlin.de --------------7780D9F40A4A554872BDF5D7 Content-Type: text/plain; charset=UTF-8; name="perf.ml" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="perf.ml" bGV0ICg8KykgYSB2ID0gQXJyYXkuYXBwZW5kIGEgW3x2fF0gCmxldCBmb28g ayBzID0KICAoKGZ1biBrICAtPiBmdW4gcyAgLT4gKGsjX2NvbnRpbnVlXyAo b2JqZWN0IChzZWxmKSAgZW5kKSkgMSkKICAgICAob2JqZWN0IChzZWxmKQog ICAgICAgIHZhbCBfY29udGludWVfID0KICAgICAgICAgIGZ1biB4ICAtPgog ICAgICAgICAgICAoZnVuIGsgIC0+CiAgICAgICAgICAgICAgIGZ1biBzICAt PgogICAgICAgICAgICAgICAgICgoZnVuIGsgIC0+IGZ1biBzICAtPiAoayNf Y29udGludWVfIChvYmplY3QgKHNlbGYpICBlbmQpKSAyKQogICAgICAgICAg ICAgICAgICAgIChvYmplY3QgKHNlbGYpCiAgICAgICAgICAgICAgICAgICAg ICAgdmFsIF9jb250aW51ZV8gPQogICAgICAgICAgICAgICAgICAgICAgICAg ZnVuIHggIC0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gayAg LT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuIHMgIC0+CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAgLT4gZnVu IHMgIC0+IChrI19jb250aW51ZV8gKG9iamVjdCAoc2VsZikgIGVuZCkpIDMp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9iamVjdCAo c2VsZikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2 YWwgX2NvbnRpbnVlXyA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBmdW4geCAgLT4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGZ1biBrICAtPgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW4gcyAgLT4KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGZ1 biBrICAtPiBmdW4gcyAgLT4gKGsjX2NvbnRpbnVlXyAob2JqZWN0IChzZWxm KSAgZW5kKSkgNCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAob2JqZWN0IChzZWxmKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBf Y29udGludWVfID0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGZ1biB4ICAtPgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo ZnVuIGsgIC0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGZ1biBzICAtPgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICgoZnVuIGsgIC0+IGZ1biBzICAtPiAoayNfY29udGludWVfIChv YmplY3QgKHNlbGYpICBlbmQpKSA1KQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChv YmplY3QgKHNlbGYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIF9jb250 aW51ZV8gPQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1biB4ICAtPgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChmdW4gayAgLT4KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBmdW4gcyAgLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGZ1 biBrICAtPiBmdW4gcyAgLT4gKGsjX2NvbnRpbnVlXyAob2JqZWN0IChzZWxm KSAgZW5kKSkgNikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob2JqZWN0IChz ZWxmKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBfY29udGludWVfID0K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBmdW4geCAgLT4KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoZnVuIGsgIC0+CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZnVuIHMgIC0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAgLT4g ZnVuIHMgIC0+IChrI19jb250aW51ZV8gKG9iamVjdCAoc2VsZikgIGVuZCkp IDcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9iamVjdCAoc2VsZikKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB2YWwgX2NvbnRpbnVlXyA9IGZ1biB4ICAt PiAoZnVuIGsgIC0+IGZ1biBzICAtPiAoayNfY29udGludWVfIChvYmplY3Qg KHNlbGYpICBlbmQpKSA4KSBrCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0 aG9kIHdpdGhfX2NvbnRpbnVlXyB4ID0gezxfY29udGludWVfID0geD59CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbWV0aG9kIF9jb250aW51ZV8gPSBfY29u dGludWVfCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSkgcykgawogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG1ldGhvZCB3aXRoX19jb250aW51ZV8geCA9 IHs8X2NvbnRpbnVlXyA9IHg+fQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1l dGhvZCBfY29udGludWVfID0gX2NvbnRpbnVlXwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGVuZCkpIHMpIGsKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRo b2Qgd2l0aF9fY29udGludWVfIHggPSB7PF9jb250aW51ZV8gPSB4Pn0KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBtZXRob2QgX2NvbnRpbnVlXyA9IF9jb250 aW51ZV8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSkgcykgawogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG1ldGhvZCB3aXRoX19jb250aW51ZV8geCA9IHs8X2NvbnRpbnVlXyA9IHg+ fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG1ldGhvZCBfY29udGludWVfID0gX2NvbnRpbnVlXwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBlbmQpKSBzKSBrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbWV0aG9kIHdpdGhfX2NvbnRpbnVlXyB4ID0gezxfY29udGludWVf ID0geD59CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bWV0aG9kIF9jb250aW51ZV8gPSBfY29udGludWVfCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGVuZCkpIHMpIGsKICAgICAgICAgICAg ICAgICAgICAgICBtZXRob2Qgd2l0aF9fY29udGludWVfIHggPSB7PF9jb250 aW51ZV8gPSB4Pn0KICAgICAgICAgICAgICAgICAgICAgICBtZXRob2QgX2Nv bnRpbnVlXyA9IF9jb250aW51ZV8KICAgICAgICAgICAgICAgICAgICAgZW5k KSkgcykgawogICAgICAgIG1ldGhvZCB3aXRoX19jb250aW51ZV8geCA9IHs8 X2NvbnRpbnVlXyA9IHg+fQogICAgICAgIG1ldGhvZCBfY29udGludWVfID0g X2NvbnRpbnVlXwogICAgICBlbmQpKSBzCiAg --------------7780D9F40A4A554872BDF5D7-- --gkGGL0DwpKfjvQlKMArFslSbCAsuwolto-- --KBv37JNoTfmxGxXdvDofR75JJQMniQVtd Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iEUEARECAAYFAlggs2QACgkQhMBO4cVSGS8UiACXXgSAtOufEnpd4V1WermVYi0g SwCgoBdONT43EeP+pBXwSkE6Fz7LjKE= =CzBE -----END PGP SIGNATURE----- --KBv37JNoTfmxGxXdvDofR75JJQMniQVtd--