<feed xmlns='http://www.w3.org/2005/Atom'>
<title>otp.git/lib/jinterface, branch OTP_R15B</title>
<subtitle>Mirror of Erlang/OTP repository.
</subtitle>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/'/>
<entry>
<title>Prepare release</title>
<updated>2011-12-12T17:14:34+00:00</updated>
<author>
<name>Erlang/OTP</name>
<email>otp@erlang.org</email>
</author>
<published>2011-12-12T17:14:34+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=b92ea63417bc6933393a3c285faf393b3d287ac2'/>
<id>b92ea63417bc6933393a3c285faf393b3d287ac2</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Update copyright years</title>
<updated>2011-12-09T15:22:23+00:00</updated>
<author>
<name>Björn-Egil Dahlberg</name>
<email>egil@erlang.org</email>
</author>
<published>2011-12-09T15:22:23+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=984f4e1c21f2c9f4a03024d36afd393515276a65'/>
<id>984f4e1c21f2c9f4a03024d36afd393515276a65</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>restore Java5 compatibility</title>
<updated>2011-12-09T11:38:52+00:00</updated>
<author>
<name>Nico Kruber</name>
<email>kruber@zib.de</email>
</author>
<published>2011-11-30T13:18:42+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=607ba455098a4750f830a5f29f9739591108647e'/>
<id>607ba455098a4750f830a5f29f9739591108647e</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>JInterface: improve OtpOutputStream buffer allocation</title>
<updated>2011-12-09T11:38:43+00:00</updated>
<author>
<name>Nico Kruber</name>
<email>kruber@zib.de</email>
</author>
<published>2011-11-25T10:48:40+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=864faca823631cfd46da432b4e405d94d7104429'/>
<id>864faca823631cfd46da432b4e405d94d7104429</id>
<content type='text'>
Previously, the buffer was increased linearly by 2048 bytes.
I now propose to use an exponential increase function
(similar to Javas ArrayList, e.g. always at least +50%).
This significantly increases performance of e.g. doRPC for
large parameters as the following comparison illustrates
(shown is the buffer size after each time, the buffer has reached its limit):

n    n*2048       (n*3)/2+1    (n*3)/2+1 (at least +2048)
1     2,048           2,048          2,048
2     4,096           3,073          4,096
3     6,144           4,610          6,145
4     8,192           6,916          9,218
5     10,240         10,375         13,828
6     12,288         15,563         20,743
7     14,336         23,345         31,115
8     16,384         35,018         46,673
9     18,432         52,528         70,010
10    20,480         78,793        105,016
11    22,528        118,190        157,525
12    24,576        177,286        236,288
13    26,624        265,930        354,433
14    28,672        398,896        531,650
15    30,720        598,345        797,476
16    32,768        897,518      1,196,215
17    34,816      1,346,278      1,794,323
18    36,864      2,019,418      2,691,485
19    38,912      3,029,128      4,037,228
20    40,960      4,543,693      6,055,843
21    43,008      6,815,540      9,083,765
22    45,056     10,223,311     13,625,648
23    47,104     15,334,967     20,438,473
24    49,152     23,002,451     30,657,710
25    51,200     34,503,677     45,986,566
26    53,248     51,755,516     68,979,850
27    55,296     77,633,275    103,469,776
28    57,344    116,449,913    155,204,665
29    59,392    174,674,870    232,806,998
30    61,440    262,012,306    349,210,498

Actually, ArrayList uses the (n*3)/2+1 strategy. In order not to
decrease performance for messages &lt;10k, we could keep the (public)
OtpOutputStream#defaultIncrement constant and let the buffer always
increase by at least this much (third column).

In order to create a buffer of 1MB, now only 16 array copies are
needed vs. (1024*1024/2048)=512 array copies for the linear increase
function. If a user sends a message of 10MB size, this is 22 vs.
5120 copies.

NOTE: the meaning of the "public static final int defaultIncrement"
member has changed a bit with this implementation (API compatibility?)
- why was this public in the first place?
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Previously, the buffer was increased linearly by 2048 bytes.
I now propose to use an exponential increase function
(similar to Javas ArrayList, e.g. always at least +50%).
This significantly increases performance of e.g. doRPC for
large parameters as the following comparison illustrates
(shown is the buffer size after each time, the buffer has reached its limit):

n    n*2048       (n*3)/2+1    (n*3)/2+1 (at least +2048)
1     2,048           2,048          2,048
2     4,096           3,073          4,096
3     6,144           4,610          6,145
4     8,192           6,916          9,218
5     10,240         10,375         13,828
6     12,288         15,563         20,743
7     14,336         23,345         31,115
8     16,384         35,018         46,673
9     18,432         52,528         70,010
10    20,480         78,793        105,016
11    22,528        118,190        157,525
12    24,576        177,286        236,288
13    26,624        265,930        354,433
14    28,672        398,896        531,650
15    30,720        598,345        797,476
16    32,768        897,518      1,196,215
17    34,816      1,346,278      1,794,323
18    36,864      2,019,418      2,691,485
19    38,912      3,029,128      4,037,228
20    40,960      4,543,693      6,055,843
21    43,008      6,815,540      9,083,765
22    45,056     10,223,311     13,625,648
23    47,104     15,334,967     20,438,473
24    49,152     23,002,451     30,657,710
25    51,200     34,503,677     45,986,566
26    53,248     51,755,516     68,979,850
27    55,296     77,633,275    103,469,776
28    57,344    116,449,913    155,204,665
29    59,392    174,674,870    232,806,998
30    61,440    262,012,306    349,210,498

Actually, ArrayList uses the (n*3)/2+1 strategy. In order not to
decrease performance for messages &lt;10k, we could keep the (public)
OtpOutputStream#defaultIncrement constant and let the buffer always
increase by at least this much (third column).

In order to create a buffer of 1MB, now only 16 array copies are
needed vs. (1024*1024/2048)=512 array copies for the linear increase
function. If a user sends a message of 10MB size, this is 22 vs.
5120 copies.

NOTE: the meaning of the "public static final int defaultIncrement"
member has changed a bit with this implementation (API compatibility?)
- why was this public in the first place?
</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "Update version numbers for pre-release of R15"</title>
<updated>2011-11-22T11:00:40+00:00</updated>
<author>
<name>Björn-Egil Dahlberg</name>
<email>egil@erlang.org</email>
</author>
<published>2011-11-22T11:00:40+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=021472220ed3afe5a9c8e0ea854bf47f9764539c'/>
<id>021472220ed3afe5a9c8e0ea854bf47f9764539c</id>
<content type='text'>
This reverts commit e21ff9b0b69219ab3853be7e80813156113152b7.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit e21ff9b0b69219ab3853be7e80813156113152b7.
</pre>
</div>
</content>
</entry>
<entry>
<title>Update version numbers for pre-release of R15</title>
<updated>2011-11-22T10:54:29+00:00</updated>
<author>
<name>Björn Gustavsson</name>
<email>bjorn@erlang.org</email>
</author>
<published>2011-11-21T12:59:36+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=e21ff9b0b69219ab3853be7e80813156113152b7'/>
<id>e21ff9b0b69219ab3853be7e80813156113152b7</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove unused */doc/src/make.dep files</title>
<updated>2011-10-27T10:52:58+00:00</updated>
<author>
<name>Björn Gustavsson</name>
<email>bjorn@erlang.org</email>
</author>
<published>2011-10-20T12:17:52+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=c8053ef7b602e8c47b6fa8919b9bbff996d3a81b'/>
<id>c8053ef7b602e8c47b6fa8919b9bbff996d3a81b</id>
<content type='text'>
These dependency files was once used when building the documentation,
but are no longer needed.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
These dependency files was once used when building the documentation,
but are no longer needed.
</pre>
</div>
</content>
</entry>
<entry>
<title>Allow noncharacter code points in unicode encoding and decoding</title>
<updated>2011-10-13T12:16:00+00:00</updated>
<author>
<name>Björn Gustavsson</name>
<email>bjorn@erlang.org</email>
</author>
<published>2011-08-30T09:51:11+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=34db76765561487e526fe66d3d19ecf3b3fb9dc8'/>
<id>34db76765561487e526fe66d3d19ecf3b3fb9dc8</id>
<content type='text'>
The two noncharacter code points 16#FFFE and 16#FFFF were not
allowed to be encoded or decoded using the unicode module or
bit syntax. That causes an inconsistency, since the noncharacters
16#FDD0 to 16#FDEF could be encoded/decoded.

There is two ways to fix that inconsistency.

We have chosen to allow 16#FFFE and 16#FFFF to be encoded and
decoded, because the noncharacters could be useful internally
within an application and it will make encoding and decoding
slightly faster.

Reported-by: Alisdair Sullivan
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The two noncharacter code points 16#FFFE and 16#FFFF were not
allowed to be encoded or decoded using the unicode module or
bit syntax. That causes an inconsistency, since the noncharacters
16#FDD0 to 16#FDEF could be encoded/decoded.

There is two ways to fix that inconsistency.

We have chosen to allow 16#FFFE and 16#FFFF to be encoded and
decoded, because the noncharacters could be useful internally
within an application and it will make encoding and decoding
slightly faster.

Reported-by: Alisdair Sullivan
</pre>
</div>
</content>
</entry>
<entry>
<title>jinterface: Use otp_subdir.mk instead of homebrewed solution</title>
<updated>2011-08-08T09:59:08+00:00</updated>
<author>
<name>Björn Gustavsson</name>
<email>bjorn@erlang.org</email>
</author>
<published>2011-06-28T09:01:57+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=b31ab335abac398caa7152020e5589d8fa817c27'/>
<id>b31ab335abac398caa7152020e5589d8fa817c27</id>
<content type='text'>
There once was a reason to have a "Makefile.otp" makefile, but
it doesn't apply any longer.  Rename it to "Makefile" so that
the standard otp_subdir.mk file can be used for recursion into
sub directories.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
There once was a reason to have a "Makefile.otp" makefile, but
it doesn't apply any longer.  Rename it to "Makefile" so that
the standard otp_subdir.mk file can be used for recursion into
sub directories.
</pre>
</div>
</content>
</entry>
<entry>
<title>otp_subdir.mk: Remove support for clearmake</title>
<updated>2011-08-08T09:59:07+00:00</updated>
<author>
<name>Björn Gustavsson</name>
<email>bjorn@erlang.org</email>
</author>
<published>2011-06-28T08:45:32+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=1a8da16eab2c67f403be6b62844f059804bc6f41'/>
<id>1a8da16eab2c67f403be6b62844f059804bc6f41</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
