Mon, 23 Sep 2002
Whee... "python -O" cheap optimisation win

I was avoiding this until I could do some decent profiling and figure hotspots and so forth, but the current profiling tool produces... difficult to use results. Maybe some day I'll write an interface to it ;) I also fixed a bug in the LRU caching for the SQL backends (I'm a doofus ;)

Anyway, the new numbers on the Sun box are:

Test name       fetch  journl jprops lookup filter filtml TOTAL
 anydbm: 10     0.02   0.10   0.02   0.04   3.03   2.82   6.03
  bsddb: 10     0.02   0.08   0.02   0.03   2.77   2.83   5.74
 bsddb3: 10     0.02   0.09   0.02   0.03   2.83   2.79   5.78
 sqlite: 10     0.09   0.35   0.09   0.02   0.38   0.54   1.46
 anydbm: 20     0.03   0.25   0.03   0.09   5.28   5.35   11.04
  bsddb: 20     0.03   0.17   0.03   0.06   5.28   5.26   10.83
 bsddb3: 20     0.03   0.18   0.04   0.07   5.94   5.40   11.65
 sqlite: 20     0.17   0.73   0.17   0.03   0.53   0.98   2.61
 anydbm: 100    0.15   0.94   0.17   0.77   57.30  57.10  116.43
  bsddb: 100    0.14   0.85   0.17   0.62   64.23  62.95  128.97
 bsddb3: 100    0.31   1.74   0.38   2.06   68.36  57.70  130.56
 sqlite: 100    0.92   4.31   0.94   0.20   1.92   11.38  19.68

Neat, huh? I'm a bit concerned by the change in the sqlite time, since there really shouldn't be much going on in python-land...

path: /python | permanent link |
Profiling thoughts...

Why has no-one written a tool to analyse python profiling data? Something as simple as the Zope call profiler I wrote would be nice. I noticed an article which at first glance has a solution: turn the profiling data into an XML call tree, and XSLT the result. Only problem is, the module supplied is obscurely written (the article doesn't really help) and doesn't have even the most basic command-line interface.

Time to go see what I can produce I suppose...

path: /python | permanent link |
Roundup speeds on the sun box

Well, the numbers are in for the sun box:

Test name       fetch  journl jprops lookup filter filtml TOTAL
 anydbm: 10     0.04   0.18   0.05   0.09   6.79   9.65   16.81
  bsddb: 10     0.04   0.21   0.05   0.09   5.01   4.94   10.34
 bsddb3: 10     0.04   0.16   0.05   0.08   4.88   4.89   10.11
 sqlite: 10     0.11   0.43   0.33   0.02   0.54   0.70   2.13
 anydbm: 20     0.08   0.35   0.11   0.22   9.96   9.75   20.47
  bsddb: 20     0.08   0.32   0.11   0.18   9.64   9.88   20.19
 bsddb3: 20     0.20   0.64   0.27   0.28   11.03  16.23  28.65
 sqlite: 20     0.23   0.94   0.96   0.05   0.66   1.33   4.17
 anydbm: 100    0.89   3.33   0.97   5.88   122.97 119.40 253.44
  bsddb: 100    0.39   1.63   0.53   2.92   121.49 103.47 230.42
 bsddb3: 100    0.41   1.67   0.54   3.04   103.09 110.23 218.99
 sqlite: 100    1.21   5.24   3.83   0.28   1.98   21.06  33.60

... ouch. The time for the join in the filtml select really comes out in the sqlite 100 test...

path: /python | permanent link |
Video games - the bar is raised

Or rather, it was raised, late last year ;)

I've decided that Grand Theft Auto 3 is a most amazing piece of work, regardless of what everyone else says :)

The amount of freedom that the game's developers have given the player is truly astounding. The bar is definitely raised.

The game has a distinct moral imbalance, and the developers have documented "issues with women". Both of these could be reasonably addressed through:

  1. Greater freedom to choose a career with the Good Guys (beyond vigilante justice, putting out car fires and saving people with the ambulance). Most of the missions that appear in the game could be played from the perspective of a Good Guy, and with a lighter emphasis on the violence. Just for an alternative... and
  2. Having women in the game that aren't hookers, bag ladies or sex-fantasy-lesbians.

path: /games | permanent link |
David Brin comes to the rescue of Star Wars
Well, first he analyses the hole that Lucas has dug himself, but then proposes a way out of it. (ta Cam via Rachel)
path: /stuff | permanent link |
More roundup speed work

I've made a few more optimisation changes to Roundup, but the index page of our dev tracker (about 600 entries) takes a good 8 seconds to render on our sparc. The last set of benchmark results I posted were run on the laptop.

Laptop
This machine benchmarks at 14285.7 pystones/second
Sun box
This machine benchmarks at 3021.15 pystones/second

Bit of a difference there - I've got to keep remembering that my development environment is blindingly fast ;)

Just running the benchmark on the target system now, will be interesting to see the difference...

path: /python | permanent link |