Program O handles AIML storage very differently from other interpreters, using a MySQL database to hold them all. The original search query for finding potential AIML matches was extremely inefficient, as was the table structure within the DB itself, so I redesigned the DB table, added some much needed indexes, and worked out a streamlined version of the query that did the actual searching. The Program O dev team is currently working on a new storage/search solution that is closer in design to the algorithms that Program AB uses, but that requires at least one of the team to understand Java, and none of us do, so I’m taking the time to learn the language. Needless to say, it’s a slow process.
As to the “most efficient”, I really don’t know, though if I had to guess I’d say either Program AB or Program Z (Pandorabots). Program O runs a distant third right now (tnough I hope to narrow the gap), and the rest are far behind that.