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:

  1. Set up simple ns tcp simulation model
  2. profile code
  3. design benchmark code based on understanding including
  4. code benchmark (probably in C++ - may use bits of ns code)
  5. port benchmark to Java
  6. Run comparisons
  7. Extentions
    1. Analysis of results
    2. Optimisations
    3. Improve scheduler algorithm
    4. Multi platform comparisons

Set up simple ns tcp simulation model

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.

Profile code

Specifically what we are hoping to discover is:
With an understaning of these it should be possible to construct a benchmark model

Design benchmark code

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 benchmark

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.

Port benchmark to Java

Write the equivalent Java program.

Run comparisons

Some basic runs with different parameters.

Extensions

Some proposed extensions if time permits (not necessarily in any order).
  1. 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?
  2. Optimisations - try to improve implementation of both schedulers
  3. Improve scheduler algorithm - try to investigate a better (more complicated) scheduling algorithm
  4. 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

Webpage maintained by mario@epcc.ed.ac.uk