I know I keep saying that I won’t be updating Program O version 2 any more, but sometimes it’s just not that simple. :)
Recent experiments with functionality for version 3 ended up working so well, and were so easy to implement that I decided to merge them in with version 2, to give you all a bit of a “taste” of things to come. This is the case with implementing an SRAI lookup table. This performance-boosting feature is probably one of the best improvements of Program O since we created version 2. Let me explain how it works.
Before this upgrade, when an AIML template contains an <srai> tag, Program O had to stop parsing the current template and do a completely new search through the entire table of AIML categories, trying to find a “best match” for the contents of the <srai> tag it just encountered. This can be a very time consuming process, especially if there are a lot of close matches to sort through and select from. Well no more. Now, when an <srai> tag is encountered, Program O now looks in the srai_lookup table for a direct pattern match. If one is found, it gets the ID of the matching AIML category, and pulls the response directly from the AIML table, without having to search through thousands (or even tens of thousands, or more) of categories. While testing this with specially written AIML that contained large numbers of <srai> tags, I saw performance boosts of over 70% when compared with version 2.3.1 and that’s a pretty impressive increase!
This new functionality is also geared to work well in multiple chatbot environments, and even with setups that have parent/child bots (though the performance increase isn’t as big with parent/child bots), so whatever sort of system you’re using, you’ll definitely see some improved response times.
As always we welcome and encourage feedback, so if you have questions, concerns or comments, please let us know in the forums. Thanks, and Happy Botmastering! :D