Hi Jess experts, We use Jess in a multi-threaded environment and have experienced some performance degradation when going from a single thread to multiple threads. Our implementation uses the Slot Specific feature.
Using a Java profiler, HashCodeComputer.isValueObject() stood out as one of the main contributing factors, if not the most likely, to the degradation. This method is synchronized using the static List m_nonValueClasses member. The averege time of this method execution is 0,2022 microsec for one thread and 1,2192 microsec for two threads. Basically, 0.2 microsec for one threads and 1 microsec for 2 and 4 threads. There are hundreds of thousands of these calls for a single Rete.run. Is it possible that HashCodeComputer.isValueObject() has such an effect on scalability and performance? If so, what can be done about it? I am looking forward to hearing any feedback. Son Nguyen