Improving Scalability of Java Archive Search Engine through Recursion Conversion And Multithreading

Oscar Karnalim
2016 CommIT Journal  
Based on the fact that bytecode always exists on Java archive, a bytecode based Java archive search engine had been developed [1, 2] . Although the system is quite effective, it still lacks of scalability because many modules applying recursive calls and the system only utilizes one core (single thread). In this research, Java archive search engine architecture is redesigned in order to improve its scalability. All recursions are converted into iterative forms although most of these modules are
more » ... logically recursive and quite difficult to convert (e.g., Tarjan's strongly connected component algorithm). Recursion conversion can be conducted by following its respective recursive pattern. Each recursion is broken down to four parts (before and after actions of current and its children) and converted to iteration with the help of caller reference. This conversion mechanism improves scalability by avoiding stack overflow error caused by method calls. System scalability is also improved by applying multithreading mechanism which successfully cut off its processing time. Shorter processing time may enable system to handle larger data. Multithreading is applied on major parts which are indexer, vector space model (VSM) retriever, low-rank vector space model (LRVSM) retriever, and semantic relatedness calculator (semantic relatedness calculator also involves multiprocess). The correctness of both recursion conversion and multithread design are proved by the fact that all implementation yield similar result.
doi:10.21512/commit.v10i1.1653 fatcat:xvsvshvbjbfhxgttpximzmsnau