caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Gabriel Scherer <gabriel.scherer@gmail.com>
To: Gregory Malecha <gmalecha@gmail.com>
Cc: Oleg <oleg@okmij.org>, Yaron Minsky <yminsky@janestreet.com>,
	Jonas Jensen <jj@issuu.com>,  caml users <caml-list@inria.fr>
Subject: Re: [Caml-list] The fastest stream library [Was: Question about Optimization]
Date: Tue, 8 Nov 2016 07:15:28 -0500	[thread overview]
Message-ID: <CAPFanBH9TnJvwYUOu-4JKmLO7j8FAJjLF0v68OtWXmUqNV+icg@mail.gmail.com> (raw)
In-Reply-To: <CAGraiH+TMxLOxiJbyYuEqKNGw88_u=5FTchS2ZyRnVJPjW0bCQ@mail.gmail.com>

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

Hi Oleg,

Thanks for the work, it does look very nice and I will have a look. My
remarks below concern the benchmarks.

I regret not being pointed to this work earlier, because I think that
measuring the performance of Enum as a representative OCaml stream library
performance is not the best choice : Enum is designed to be flexible in a
bit too many ways to be efficient on pure-streaming scenarios (it supports
a generic "clone", and effectful generators, that makes the codebase too
complex for its own good; I think that Batteries community is aware that
Enum is not as good as it should be right now). There are other, more
efficient streaming libraries out there, including BatSeq in Batteries that
should already be sensibly faster; Core and Containers also have more
efficient streaming libraries.

I think that it would be good to try to use at least BatSeq for your
benchmarks. I won't have time this week or the next one, but then maybe I
could look at it. I'm not surprised that neither POPL reviewing nor POPL
artifact evaluation caught this issue, but next time you benchmark using
Batteries, feel free to send an email to the batteries-users mailing-list
to point it out.

On Tue, Nov 8, 2016 at 7:05 AM, Gregory Malecha <gmalecha@gmail.com> wrote:

> Thanks. This is interesting, I'll have to take a closer look at it.
>
> On Tue, Nov 8, 2016, 7:01 AM Oleg <oleg@okmij.org> wrote:
>
>>
>> > On 21 April 2016 at 09:13, Gregory Malecha <gmalecha@gmail.com> wrote:
>> > I'm wondering if there is any work (and interest) on supporting
>> > user-defined optimizations similar to GHC's rewrite rules in the Ocaml
>> > compiler. For example, a standard example would be specifying map
>> fusion:
>>
>> to which Gabriel Scherer commented on Thu, 21 Apr 2016 12:02:14 -0400
>>
>> > Another approach that might be worth trying (sorry for not thinking
>> > about it earlier) is MetaOCaml. I tend of think of it as a tool to
>> > explicitly specify and control partial evaluation strategies.
>>
>> Indeed. We'd like to point out an application of MetaOCaml, not just
>> to map fusion -- but also concat_map fusion and zip fusion, etc. We
>> present a streams library that supports the wide set of combinators --
>> from map and filter to concat_map (flat_map) and zip -- and produces
>> the hand-written quality code. It is faster than Batteries by up to more
>> than two orders of magnitude.
>>
>>         http://okmij.org/ftp/meta-programming/strymonas.pdf
>>         http://strymonas.github.io/
>>
>> Unlike GHC Rules, we guarantee the performance.
>>
> --
>
> - gregory malecha
>   gmalecha.github.io
>

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

  reply	other threads:[~2016-11-08 12:16 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-21  7:13 [Caml-list] Question about Optimization Gregory Malecha
2016-04-21  9:32 ` Jonas Jensen
2016-04-21 11:45   ` Yaron Minsky
2016-04-21 15:45     ` Gregory Malecha
2016-04-21 16:02       ` Gabriel Scherer
2016-04-21 16:05         ` Daniel Bünzli
2016-04-21 16:35           ` Ben Millwood
2016-04-22 16:09             ` Gregory Malecha
2016-11-08 12:07         ` [Caml-list] The fastest stream library [Was: Question about Optimization] Oleg
2016-11-08 12:05           ` Gregory Malecha
2016-11-08 12:15             ` Gabriel Scherer [this message]
2016-11-08 12:47               ` [Caml-list] The fastest stream library [Was: Question about Oleg
2016-11-08 15:45                 ` Gabriel Scherer
2016-11-12 13:01                   ` Oleg
2016-11-12 16:21                     ` Simon Cruanes
2016-11-12 16:35                       ` Gabriel Scherer

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=CAPFanBH9TnJvwYUOu-4JKmLO7j8FAJjLF0v68OtWXmUqNV+icg@mail.gmail.com \
    --to=gabriel.scherer@gmail.com \
    --cc=caml-list@inria.fr \
    --cc=gmalecha@gmail.com \
    --cc=jj@issuu.com \
    --cc=oleg@okmij.org \
    --cc=yminsky@janestreet.com \
    /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;
as well as URLs for NNTP newsgroup(s).