DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG· RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://issues.apache.org/bugzilla/show_bug.cgi?id=34930>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND· INSERTED IN THE BUG DATABASE.
http://issues.apache.org/bugzilla/show_bug.cgi?id=34930 ------- Additional Comments From [EMAIL PROTECTED] 2005-05-25 06:40 ------- Yep, throwing and catching exception in the critical path is always a performance gotcha, common case or not. See any VM implementation performance papers such as in the IBM Systems journal some years ago, and others. No idea why the javacc folks didn't come up with an API that does not involve exceptions for *normal* control flow. Well, javacc has probably been unmaintained dead code for some time now. [Even Xerces has such gotchas deep inside it's low level native API - I chatted with this some time ago with a Sun engineer]. Anyway, you can preallocate the IOException in FastCharStream in a private static final var, and then throw the same exception object again and again on EOS. That gives some factor 2x the cheap way because the stack trace does not have to be generated and filled repeatadly (Same for the QueryParser copy of FastCharStream). The other additional 5x comes from getting rid of the exception completely - catching exceptions is expensive. This is done via dirty patching the javacc generated code to not require EOS exceptions at all. Instead you can return 0xFFFF as an EOS marker, or some other unused Unicode value. Look at the javacc generated code and see where it catches the EOS exception. That's where you'd need to fiddle around, making sure true abnormal exceptions are still handled properly. It's really an akward maintainance nightmare because it interferes with generated code, so I don't really recommend this. Still, StandardAnalyzer eats CPU (and buffer memory) like there's no tomorrow. Instead, I'd recommend giving PatternAnalyzer (from the "memory" SVN contrib area) a try. The functionality is almost the same as StandardAnalyzer, but it can be many times faster, especially when using it with a String rather than a Reader, and you don't have to wait indefinitely for lucene to get fixed. -- Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]