Improving Scalability of Java Archive Search Engine through Recursion Conversion And Multithreading
Abstract: Based on the fact
that bytecode always exists on Java archive, a bytecode based Java archive
search engine had been developed [1, 2]. Although this system is quite
effective, it still lack of scalability since many modules apply recursive
calls and this system only utilizes one core (single thread). In this research,
Java archive search engine architecture is redesigned in order to improve its
scalability. All recursion are converted to iterative forms although most of
these modules are 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
broke 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.
Keywords: scalability;
recursion conversion; multithreading; java archive search engine; multiprocess
Author: Oscar Karnalim
Journal Code: jptinformatikagg160018