|
|
Summer Scholarship Programme
Project Proposal |
|
|
Project Title
A Java Grande benchmark to compare Java and C++ performance
for a discrete event simulation application.
Project Proposer(s)
Martin Westhead, Mark Bull
Date of proposal
2001/02/12 10:06:19
Project Details
Aim:
To build C++ and Java versions of a benchmark for the JGF benchmark suite
to look at the behaviour of a discrete event simulation application.
The benchmark code will be written from scratch but based
on analysis of the ns network simulator code and behaviour. The idea will
be to create a benchmark with similar call structure and memory use/access
patterns to ns.
Work Plan
Project stages:
- Set up simple ns tcp simulation model
- profile code
- design benchmark code based on understanding including
- code benchmark (probably in C++ - may use bits of ns
code)
- port benchmark to Java
- Run comparisons
- Extentions
- Analysis of results
- Optimisations
- Improve scheduler algorithm
- Multi platform comparisons
This will be a relatively simple exercise for the student to get to grips
with running an ns simulation. We have several simulations to serve as starting
points.
Specifically what we are hoping to discover is:
- distribution of inter-event intervals (expecting Poisson)
- distribution of stack depth for executing a simulation event
- distribution of compuation time for executing an event
With an understaning of these it should be possible to construct a benchmark
model
The first stage will be a simple scheduler which will call 'tasks' of differing
complexity called at differing stack depth. If time permits the simple scheduler
should be improved upon.
Code the scheduler first in C++ based on the design. It is expected that
most of the code will be written from scratch but some aspects of the ns
code may be useful here.
Write the equivalent Java program.
Some basic runs with different parameters.
Extensions
Some proposed extensions if time permits (not necessarily in any order).
- Analysis of results - look for reasons to explain differences in performance
where is the time being spent in each case? Does it correspond to the real
simulator? How are the C++ and Java codes different?
- Optimisations - try to improve implementation of both schedulers
- Improve scheduler algorithm - try to investigate a better (more complicated)
scheduling algorithm
- Multi platform comparisons - see how the performance comparison differs
between machines and JREs
Computing Skills Required
C++, Java
Training Required
Not stated.
Computing Resources
Access to suns for development plus: Bobcat, a PC etc.
for running benchmarks