Mailing list for all users of the OCaml language and system.
 help / color / mirror / Atom feed
From: Berke Durak <berke.durak@gmail.com>
To: caml-list <caml-list@inria.fr>
Subject: [Caml-list] Why is some code compiled with 4.04.0 or 4.05.0 running 2.3 times slower than the same code compiled with 4.03.0?
Date: Sat, 29 Oct 2016 23:42:51 -0700	[thread overview]
Message-ID: <CAALTfKCF1TRznq43rE04VmHRX-zzSEDEapvFgyeiqUq63Jyw1A@mail.gmail.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 1303 bytes --]

I compiled and ran a simple matrix-multiplication-style benchmark program
written in imperative style with Bigarrays (see below) using versions
4.01.0, 4.03.0, 4.03.0+flambda, 4.04.0+trunk+flambda (with -version
4.04.0+dev9-2015-09-05), 4.04.0+beta2+flambda (4.04.0+beta2) and
4.05+trunk+flambda (4.05.0+dev0-2016-08-01).

Execution time increased by a factor of 2.3 from 4.03+flambda to
4.04+trunk+flambda.  I tried a few of the newer optimization switches
(-rounds X, -unboxed-types, -unbox-closures, etc.) but that didn't make a
significant difference.

Execution times, repeatable within ~5%:

4.01.0                5.45s
4.03.0                4.28s
4.03.0+flambda        4.44s
4.04.0+trunk+flambda  10.45s
4.04.0+beta2+flambda 10.72s
4.05.0+trunk+flambda  10.36s

The test program was:

open Bigarray

let _ =
  let m, n, rep = 100, 100, 1000 in
  let cr m n = Array2.create float64 fortran_layout m n in
  let a = cr m n in
  let c = cr m m in
  let rz = ref 0.0 in
  let x = ref 0.0 in
  for r = 1 to rep do
    for i = 1 to m do
      for j = 1 to n do
a.{i,j} <- !rz;
rz := !rz +. 123.45;
      done
    done;
    for i = 1 to m do
      for j = 1 to m do
x := 0.0;
for k = 1 to n do
 x := !x +. a.{i,k} *. a.{k,i}
done;
c.{i,j} <- !x
      done
    done
  done

-- 
Berke Durak, VA7OBD (CN88)

[-- Attachment #2: Type: text/html, Size: 2378 bytes --]

             reply	other threads:[~2016-10-30  6:43 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-30  6:42 Berke Durak [this message]
2016-10-30 16:49 ` David Allsopp
2016-10-31  7:37   ` Mark Shinwell
2016-10-31 23:16     ` Berke Durak

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAALTfKCF1TRznq43rE04VmHRX-zzSEDEapvFgyeiqUq63Jyw1A@mail.gmail.com \
    --to=berke.durak@gmail.com \
    --cc=caml-list@inria.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox