intrig / xenon

The Intrig Message Decoder
MIT License
1 stars 6 forks source link

Release 2.1.0 Patch Notes #7

Closed intrig closed 8 years ago

intrig commented 8 years ago

Release 2.1.0 Patch Notes

Improved performance

Added xenon/perf directory

This directory contains a few performance tests for loading xddl, decoding, and decoding to xml.

These tests can be run using make perf after building the xenon tree.

Results

Compared to release 2.0.0:

Results vary based on architecture. The above statistics come from my desktop rig. On my MacBook Air, the xml decoding shows a 2X improvement. These variances may be due to clang and gcc differences, or different cache sizes. Either way, things are getting faster.

Using ict::osstream

Until now, xenon has used std::ostringstream for building strings. Although convenient, this method is notoriously slow. I finally addressed this by implementing ict::osstream. This is a simple reusable type that provides basic ostream operations for strings and numbers, but nothing else.

Internal Updates

xenon::recref

Created a new type called xenon::recref. This replaces the previous usage of ict::url. ict::url was a bit too ambitious of a name. recref is represents a path to a record in the xddl tree. The API has been updated to use it, for example:

spec::cursor get_record(spec_server &, const recref &);

Going forward, the plan is to improve addressing of records to more closely match the method used on the http://intrig.com website. For example a recref that is currently defined like this:

xenon::recref a{"xddl/3GPP2/TS-23.038.xddl#4d"};

will be:

xenon::recref a{"xddl/3GPP2/TS-23.038/4d"};