The Tests

Most of the tests have 8 variants. One with 5, 50, 500 and 5000 items to test scalability and int32 and BString versions where int32 are fixed size and BStrings variable.
Also there are two versions of the flatten / unflatten tests. The normal one has just 1 field with 5, 50, 500 or 5000 items. The individual ones have 5, 50, 500 or 5000 fields with 1 item each.
All times below are microseconds (usecs) and contain timing errors. Due to this these values should be looked at as indications and not facts.
All tests were conducted on a P4 3.0GHz with 512MB RAM running BeOS R5.

What is What

R5: Original R5 implementation
Message1: Current Haiku implementation
Message2: Second implementation in the SVN repository
Message3: Third implementation operating on a flat buffer
Message4: Flat buffer only, no fancy classes, just pure flat stuff
Winner: Fastest implementation
Haiku Winner: Fastest implementation available for Haiku

Results as of 20051031

TestR5Message1Message2Message3Message4WinnerHaiku Winner
tCreate5Int32():91913118Message4Message4
tCreate50Int32():79175978780R5Message4
tCreate500Int32():903242810021897758Message4Message4
tCreate5000Int32():74451500511125203737907R5Message4
tCreate5String():824131412R5Message4
tCreate50String():77328210912082R5Message4
tCreate500String():1118196810791076815Message4Message4
tCreate5000String():82451674012589115168238Message4Message4
tLookup5Int32():24332-Message4
tLookup50Int32():23222--
tLookup500Int32():23332-Message4
tLookup5000Int32():23444R5Message1
tRead5Int32():8128107Message4Message4
tRead50Int32():72105787774R5Message4
tRead500Int32():71714982790763700Message4Message4
tRead5000Int32():785210836881096958505R5Message4
tRead5String():9121189Message3Message3
tRead50String():72106938279R5Message4
tRead500String():983348918287951163Message3Message3
tRead5000String():61017111549019827265422Message3Message3
tFlatten5Int32():514984Message4Message4
tFlatten50Int32():435985R5Message4
tFlatten500Int32():1926811106Message4Message4
tFlatten5000Int32():456324255251Message2Message2
tFlatten5String():614784Message4Message4
tFlatten50String():540111013R5Message3
tFlatten500String():21863162915Message4Message4
tFlatten5000String():1722990280183152Message4Message4
tFlattenIndividual5Int32():717984Message4Message4
tFlattenIndividual50Int32():366728107Message4Message4
tFlattenIndividual500Int32():3266612882720Message4Message4
tFlattenIndividual5000Int32():364475823891383910Message3Message3
tFlattenIndividual5String():8191194Message4Message4
tFlattenIndividual50String():397233118Message4Message4
tFlattenIndividual500String():3829443836664Message4Message4
tFlattenIndividual5000String():4278849846546311094Message3Message3
tUnflatten5Int32():629115294Message4Message4
tUnflatten50Int32():51099104Message4Message4
tUnflatten500Int32():22809112117Message2Message2
tUnflatten5000Int32():939828687349Message4Message4
tUnflatten5String():527895-Message4
tUnflatten50String():710210255Message4Message4
tUnflatten500String():181154301239Message4Message4
tUnflatten5000String():48691883311501210Message4Message4
tUnflattenIndividual5Int32():73715125Message4Message4
tUnflattenIndividual50Int32():35269893816Message4Message4
tUnflattenIndividual500Int32():2663324235430650Message4Message4
tUnflattenIndividual5000Int32():44023538777514654634Message4Message4
tUnflattenIndividual5String():3141191432Message3Message3
tUnflattenIndividual50String():46261956216Message4Message4
tUnflattenIndividual500String():538370580995564Message4Message4
tUnflattenIndividual5000String():94643649479645174753Message4Message4