Abstract:
Reduction in computer science is the process of combining two or more elements into one. This process is widely used by network based applications for integrating results from di erent computers of a network. It also seems reasonable to use the same mechanism in shared memory applications that run on a single computer. That is, reducing the results that are obtained from di erent threads in a computer into the nal result. However, there are not many libraries that facilitate reduction on single computers, as the main focus has been on network based applications thus far. Considering the bene ts of reduction for improving performance on shared memory applications, developing assistant libraries in this scope is quite worthwhile. In this paper we have introduced an extensive reduction library that has been developed for Java. Moreover, the object oriented considerations of the design have been explained, and it has been clari ed how users bene t from them. Also, we have compared the features provided by our design with a few others that are available in this eld. Further examples in this paper help with clearer understanding of the logic of our design.