\chapter*{Abstract}
% Data-driven problems have common characteristics: a large number of small objects with complex dependencies. This makes
% traditional parallel programming approaches more difficult to apply. This project will focus on 'data-driven' JStar
% programs that  rules triggered by the tuples from a CSV file or SQL query, and making those programs run fast in
% parallel. The data-flow structure of these programs will be analysed, so that they can be translated into efficient
% programs using the 'Disruptor' Java framework (\url{http://code.google.com/p/disruptor}).
Data-driven problems have common characteristics: a large number of small objects with complex dependencies.
This makes the traditional parallel programming approaches more difficult to apply as pipe-lining the task dependencies
may require to rewrite or recompile the program into efficient parallel implementations. This thesis focuses on
\keyword{data-driven} JStar programs that have rules triggered by the tuples from a bulky CSV file or from other sources
of complex data, and making those programs run fast in parallel. JStar is a new declarative language for parallel
programming that encourages programmers to write their applications with implicit parallelism.
\par The thesis briefly introduces the JStar language and the implicit default parallelism of the JStar compiler.
It describes the root causes of the poor performance of the naive parallel JStar programs and defines a performance tuning
process to increase the speed of JStar programs as the number of cores increase and minimize the memory usage in the
Java Heap.
Several graphic analysis tools were developed to allow analysis of bottlenecks in parallel programs.
The JStar compiler and runtime were extended so that it is easy to apply a variety of optimisations to a JStar program
without changing the JStar source program. This process were applied to four case studies which were benchmarked on
different multicore machines to measure the performance and scalability of JStar programs.
%---blank page
\newpage
\thispagestyle{empty}
\mbox{}
