Askemos 2000 (Archive)
home · features · download · archive


Performance Considerations

We run an online profiler, where several interesting calls are measured.

It might be interesting to see that this is run on a live system on a pretty old hardware.

Most performance relevant issues are encapsulated in the underlying language implementation.

Page Status

These notes are really outdated, last modification 21st Oct 2003!

TODO: there should be a related link section:

Very Old Notes

The rest of the document is pretty old. It's only of historical interest and maybe good for comparision of different implementation strategies.

Within Askemos it's more important to optimize for human understanding than premature optimization for speed or memory consumtion. Therefore many things are implemented "straight forward" and there is space for optimization.

All algorithm, which operate on variable size data are (supposed to be) of lowest known complexity (currently this means solved in linear time). This means: optimization efforts can be traded for hardware especially since the software is coded functionality and highly threaded anyway.

An issue exists with the implementation of node-list. TODO It should be done in a lazy way (see rdp.scm). I guess this could be faster if applications fon't have to traverse the whole document.

There are some data structures, of size with an upper bound (i.e, the slots of a place). Some operations currently use quadratic algorithm (assoc) on them. Accepted because of small size.

Please don't try to optimize for space or speed on the expense of human understanding. By coding style rules (to be written down) side effects must be commented, and no algorithm must ever trade algorithm complexity for either size or speed.

To be taken into account

About the Google file system (which shares a few LLD decisions, though not the master) decouples data and control flow much to the performance advantage of the whole system. While we do that at the storage level (in the FileSystemMirror) it should also be done upon request replication.


From the kernel-profiler we found that a distributed transaction over SSL (WAN? connection) takes approximately 0.15 seconds on average. As expected this time is mostly dictated by the byzantine protocol and almost independant of the data size.

Comparing with it seems that those 50ms negotiation time are what we would expect from a tcp connection. Considering that it takes two messages per peer and the test envorionment has a typical ping time of 30-40ms, we can't expect further improvements.

Actual Tests

Here a few rather simple and superficial tests, which have been conducted.

Test setup: a laptop with Pentium 2 300 mhz memory loaded; test date: 2003/01/31

Chicken lacks the -unsafe compile option, because it happens to break the executable. Moreover there seems to be some unintended constant delay (bug) and some thread switch problem in the chicken version, which might confuse the results here.

The comparision of static data delivery rate to the apache web server is somewhat incorrect because Askemos doesn't have the concept of static content.

Test rscheme chicken apache
500x 6716 byte user home page 40s 720s n/a
500x 32250 byte, two places involved, two xslt transformations 64s 750s n/a
500x 345k "static" data, no authorization 18s n/a (new bug) 18s

The 2nd test involves much more operations (place read) than the 1st, yet delivered 252k per second while the 1st gave 84k.

This indicates that the xml serializing, which used to be the bottleneck before, is of minor impact since some optimizations where introduced.

A fair comparison seems to be (the rendering engine on Turbine) who published their measurement of 23 pages in 7-8 seconds at a Piii 500mhz.

Not fair at all: apache (without cocoon) delivered the 28k static result page from third test at a rate of 59 per second.

last modification: Fri, 22 Jun 2007 08:59:25 +0200
authors: jfw,
document identifier: A849640f672ed0df0958abc0712110f3c
delivered to public at Mon, 02 May 2016 03:21:28 +0200
short comments


pdf :: context view

24 Apr 2004 DefineInsecureMode
12 Dez 2010 FreeBSD
07 Dez 2010 BALLFeatures
05 Dez 2010 ByzantineAgreement
04 Dez 2010 SQLITE
03 Dez 2010 SRS
12 Okt 2010 WebDAV
12 Sep 2010 SQL
16 Jun 2010 BALL
16 Jun 2010 CouchDB
16 Jun 2010 AskemosServer
07 Mai 2010 SystemRequirements
30 Mar 2010 ProjectsOnThePlate
30 Mar 2010 AskemosResources
30 Mar 2010 RSchemeInstall
30 Mar 2010 INSTALL
30 Mar 2010 ChickenScheme
27 Nov 2009 subscriber
12 Jul 2009 test
01 Jul 2009 TrustCenter
27 Dez 2008 JKomG
26 Dez 2008 FanOut
26 Dez 2008 MIME
02 Mai 2006 AskemosTopMenu
18 Nov 2008 StorageAdaptor
18 Nov 2008 PStoreStorageAdapt
18 Nov 2008 OperationTips
15 Nov 2008 PCRE
04 Nov 2008 ProgrammingLanguag
09 Sep 2008 RelatedProjects
23 Jul 2008 ModuleStructure05
17 Jun 2008 NEWS
17 Jun 2008 HTML
17 Jun 2008 ACM
22 Mai 2008 HTTP
22 Mai 2008 BOSH
10 Mai 2008 AskemosBibliograph
10 Mai 2008 JerrysDreamAbstrac
20 Apr 2008 XSLT
11 Mar 2008 CodingStyle
10 Mar 2008
09 Mar 2008 MIMEConverter
07 Mar 2008 XML
06 Mar 2008 SRFI
01 Mar 2008 RFC4810


home · features · download · archive