From ripley at stats.ox.ac.uk  Tue Jul 20 12:45:31 2010
From: ripley at stats.ox.ac.uk (Prof Brian Ripley)
Date: Tue, 20 Jul 2010 11:45:31 +0100 (BST)
Subject: [Rd] Suggestion for serialization performance improvement on
 Windows
In-Reply-To: <AANLkTimwIiK0sBwpnhQv9cPS2LJzwsVlTD9splgANzxP@mail.gmail.com>
References: <AANLkTimwIiK0sBwpnhQv9cPS2LJzwsVlTD9splgANzxP@mail.gmail.com>
Message-ID: <alpine.LFD.2.00.1007090921010.26547@gannet.stats.ox.ac.uk>

On Fri, 9 Jul 2010, Bryan W. Lewis wrote:

> Dear R developers,
>
>  The slow performance of serializing to a raw vector on Windows is an
> issue that has appeared in this list before. It appears to be due to

References?

> the frequent use of realloc from the resize_buffer method in
> serialize.c.
>
> I suggest a more granular, but still incremental, re-allocation of
> memory. For example change near the top of resize_buffer to:
>
> R_size_t newsize = needed + 65536 - (needed % 65536);
>
> or some other similar small multiple of a typical system page size.

for some definition of 'small multiple'

> I have found this to dramatically improve performance of serialization
> to raw vectors on Windows.

However, I didn't and you presented no evidence.  On HB's 2008 example 
your idea achieved for me a speedup of about 3x.  A much better 
speedup (15x) was achieved by switching serialize.c to use the 
alternative malloc used by memory.c, and using a much larger page size 
(e.g. 1Mb) was better still.  But changing the re-allocation strategy 
resulted in a 150x speed up, to levels comparable to decent operating 
systems like Linux and Solaris with the existing code.

(In case it matters, I was using x64 Windows 7.)

Ideally you would have

- given references for your claims

- given examples for why this was too slow for you

- specified an exact patch with performance comparisons for your examples

- given your credentials (see the comment about 'good manners' in the 
R posting guide).  It is very likely that we would not have been able 
to use any patch you supplied without such credentials.

So please test R-devel, and if there is still a problem reply with all 
the details omitted here.

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595



[Rd] Suggestion for serialization performance improvement on Windows
Prof Brian Ripley