Differences between revisions 2 and 3
Revision 2 as of 2007-11-15 03:30:50
Size: 2472
Editor: PhilipJenvey
Comment: put MSG under Writing:
Revision 3 as of 2007-11-15 04:54:09
Size: 2533
Editor: PhilipJenvey
Comment: small update
Deletions are marked like this. Additions are marked like this.
Line 16: Line 16:
* why is read slower than iter?
Line 23: Line 25:
http://underboss.org/~pjenvey/jython/pyfile-nio/small/test_read.jpg
http://underboss.org/~pjenvey/jython/pyfile-nio/big/test_read.jpg
[http://underboss.org/~pjenvey/jython/pyfile-nio/small/test_read.jpg]
[http://underboss.org/~pjenvey/jython/pyfile-nio/big/test_read.jpg]
Line 31: Line 33:
http://underboss.org/~pjenvey/jython/pyfile-nio/small/test_iter.jpg
http://underboss.org/~pjenvey/jython/pyfile-nio/big/test_iter.jpg
[http://underboss.org/~pjenvey/jython/pyfile-nio/small/test_iter.jpg]
[http://underboss.org/~pjenvey/jython/pyfile-nio/big/test_iter.jpg]
Line 39: Line 41:
http://underboss.org/~pjenvey/jython/pyfile-nio/small/test_readline.jpg
http://underboss.org/~pjenvey/jython/pyfile-nio/big/test_readline.jpg
[http://underboss.org/~pjenvey/jython/pyfile-nio/small/test_readline.jpg]
[http://underboss.org/~pjenvey/jython/pyfile-nio/big/test_readline.jpg]
Line 47: Line 49:
http://underboss.org/~pjenvey/jython/pyfile-nio/small/test_readline_with_tell.jpg
http://underboss.org/~pjenvey/jython/pyfile-nio/big/test_readline_with_tell.jpg
[http://underboss.org/~pjenvey/jython/pyfile-nio/small/test_readline_with_tell.jpg]
[http://underboss.org/~pjenvey/jython/pyfile-nio/big/test_readline_with_tell.jpg]
Line 54: Line 56:
http://underboss.org/~pjenvey/jython/pyfile-nio/small/test_readlines.jpg
http://underboss.org/~pjenvey/jython/pyfile-nio/big/test_readlines.jpg
[http://underboss.org/~pjenvey/jython/pyfile-nio/small/test_readlines.jpg]
[http://underboss.org/~pjenvey/jython/pyfile-nio/big/test_readlines.jpg]
Line 71: Line 73:
http://underboss.org/~pjenvey/jython/pyfile-nio/big/test_write.jpg [http://underboss.org/~pjenvey/jython/pyfile-nio/big/test_write.jpg]
Line 78: Line 80:
http://underboss.org/~pjenvey/jython/pyfile-nio/small/test_writelines.jpg
http://underboss.org/~pjenvey/jython/pyfile-nio/big/test_writelines.jpg
[http://underboss.org/~pjenvey/jython/pyfile-nio/small/test_writelines.jpg]
[http://underboss.org/~pjenvey/jython/pyfile-nio/big/test_writelines.jpg]

Some PyFile benchmarks, mostly to show off the PyFile nio rewrite

Tests done on FreeBSD 6.2-RELEASE, Java 1.5.0_13 in server mode and Python 2.5.1

(If anyone's worried about FreeBSD Java, the times are in line with OS X's Java 1.5)

Preparations: 100 Iterations: 5

Notes:

* jython's file iter is roughly equivalent to its readline, whereas CPython's readline is not as optimized as its iter

* The few anomalies in the smaller benchmarks are probably due to hotspot kicking in. Ideally we would run more preparations

* why is read slower than iter?

Reading:

   1     def test_read(self, fp):
   2         fp.read()
   3     test_read = bench(test_read)

[http://underboss.org/~pjenvey/jython/pyfile-nio/small/test_read.jpg] [http://underboss.org/~pjenvey/jython/pyfile-nio/big/test_read.jpg]

   1     def test_iter(self, fp):
   2         for line in fp:
   3             pass

[http://underboss.org/~pjenvey/jython/pyfile-nio/small/test_iter.jpg] [http://underboss.org/~pjenvey/jython/pyfile-nio/big/test_iter.jpg]

   1     def test_readline(self, fp):
   2         while fp.readline():
   3             pass

[http://underboss.org/~pjenvey/jython/pyfile-nio/small/test_readline.jpg] [http://underboss.org/~pjenvey/jython/pyfile-nio/big/test_readline.jpg]

   1     def test_readline_with_tell(self, fp):
   2         while fp.readline():
   3             fp.tell()

[http://underboss.org/~pjenvey/jython/pyfile-nio/small/test_readline_with_tell.jpg] [http://underboss.org/~pjenvey/jython/pyfile-nio/big/test_readline_with_tell.jpg]

   1     def test_readlines(self, fp):
   2         fp.readlines()

[http://underboss.org/~pjenvey/jython/pyfile-nio/small/test_readlines.jpg] [http://underboss.org/~pjenvey/jython/pyfile-nio/big/test_readlines.jpg]

Writing:

   1 MSG = ('abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz123456789'
   2        '0abcdefgh\r\n')

   1     def test_write(self, fp, lines):
   2         write = fp.write
   3         for i in range(lines):
   4             write(MSG)

[http://underboss.org/~pjenvey/jython/pyfile-nio/small/test_write.jpg] [http://underboss.org/~pjenvey/jython/pyfile-nio/big/test_write.jpg]

   1     def test_writelines(self, fp, lines):
   2         lines = [MSG for i in range(lines)]
   3         fp.writelines(lines)

[http://underboss.org/~pjenvey/jython/pyfile-nio/small/test_writelines.jpg] [http://underboss.org/~pjenvey/jython/pyfile-nio/big/test_writelines.jpg]

PyFileBenchmarks (last edited 2009-02-24 20:53:52 by PhilipJenvey)