I am going through and working to improve the performance of the IRI implementation... which at this point is by far the most inefficient part of our code. When I first implemented it, I added a number of features that were intended purely to provide for a complete IRI implementation (e.g. conversion from URI-to-IRI, scheme-specific equivalence checking, normalization, etc). None of these features are actually used by any part of Abdera right now. However, some of the work necessary to support them is partially to blame for the performance hit. I would like to remove these features.
If it turns out that people actually are using those things, we can add them back in using a separate utility class. Doing so will increase the overhead a bit for those specific features but will mean the majority of cases won't have to pay a performance tax for stuff that will likely never be used. - James
