Eon alpha release, performance notes

The eon object system is now officially in alpha, whatever that means. Play with it if you like, let me know if you have any thoughts.

I was a bit worried about performance because I use so many macros and so much indirection (in the form of objects forwarding zillions of messages to each other.) But after some tests, the compiled pixel-demo program seems to perform decently; it feels responsive enough. (See ELP results below for hard numbers).

The most frequently invoked function, namely (eon-read-slot), takes very little time—which was one of the main design goals. Once you have fast slot lookup, it becomes more reasonable to do proxying and all sorts of other neat stuff.

Another tweak: I've decided to assign permanent Universally Unique Identifiers (UUID's) to EVERY EON OBJECT anybody ever creates. Furthermore you can assign yourself a UUID, and all the emacs peeps will have unique ID's. When you publish objects, they're tagged with your UUID in the :owner field (or something like that, I haven't decided yet.) I bet we could add object authentication and encryption, etc.

Function Name                          Call Count  Elapsed Time  Average Time
=====================================  ==========  ============  ============
eon-deliver-message                    3451        2.9767450000  0.0008625746
eon:method:cell-sheet:render           46          0.798569      0.0173601956
eon:method:cell-sheet:move-cursor      31          0.44502       0.0143554838
eon:method:cell-sheet:calculate        11          0.4162220000  0.0378383636
eon-default-clone-method               257         0.316109      0.0012299961
eon-clone                              1           0.299976      0.299976
eon:method:pixel-sheet:initialize      1           0.2998929999  0.2998929999
eon:method:cell-sheet:initialize       1           0.277868      0.277868
eon-read-slot                          34184       0.1566370000  4.582...e-06
eon:method:pixel:calculate             2816        0.0667159999  2.369...e-05
eon:method:cell-sheet:clone-fill       1           0.021941      0.021941
eon-find-prototype                     6366        0.0130439999  2.049...e-06
eon-write-slot                         2869        0.0082790000  2.885...e-06
eon:method:cell-sheet:apply-tool       10          0.0010609999  0.0001060999
eon-default-initialize-method          256         0.0002339999  9.140...e-07
eon:method:cell-sheet:show             1           0.000178      0.000178
eon:method:cell-sheet:cell-at          10          0.000135      1.35e-05
eon:method:pixel:set-color             10          0.000132      1.32e-05
eon-find-object                        3           8e-06         2.666...e-06

Author: David O'Toole <dto@gnu.org>

Date: 2009-11-18 03:47:52 EST

HTML generated by org-mode 6.30trans in emacs 23