CS 5010: Problem Set 12
Out: Monday, 10 April 2017
Due: Monday, 17 April 2017 at 6pm
This is an individual assignment. You are not allowed to discuss this problem set with any other person. You are also not allowed to search for or to view any solutions to similar problems that may be available on the World-Wide Web or in other resources that might otherwise have been available to you.
Use the repository we created for you at the beginning of the semester.
At the end of every work session, you are required to update your log file to record the time you spent in that work session. (Please do not include the time you spent in any previous work sessions, as those times will already have been recorded in previous versions of your log file.)
In this problem set, you will run several benchmarks and report your findings. You will run the benchmarks on a machine that has the following software installed:
Gnu C compiler
- Java 8
- the ps11 interpreter you wrote in Problem Set 10 and improved in Problem Set 11
- the Larceny implementation of Scheme
gcc, Java 8, and Larceny can be downloaded
from the web sites linked above.
If you are unable to install one or more of those systems
on a machine you own or control, you can use one of the
CCIS Linux machines in WVH 102.
If you use one of the CCIS Linux machines, you will probably
want to add
/course/cs5010sp17/bin to your path
so you can run
larceny more easily.
Please do not run benchmarks on
Many other students are using that server.
They and the CCIS system staff will be annoyed if you run
cpu-intensive benchmarks on that shared server.
Because so many other students are using that server,
any timings you obtain on that server would be unreliable
In the first part of this problem set, you will run benchmarks
that rely on non-tail recursion (
tail recursion (
sumsq), and you will translate
one of those benchmarks into an equivalent Java program that
uses idiomatic loops instead of tail recursion.
In the second part of this problem set, you will run two benchmarks that were designed to measure the speed of storage allocation and deallocation.
Your deliverables include the
you will complete in part 1, and a
that records the timings you measure in both parts.
You will also write your answer to a popular question about
explicit deallocation versus garbage collection.
We are giving you a
that contains several benchmarks, a tail-recursive
Sumsq2.java program you will modify,
report.txt file you will modify.
Unpack that directory and push it to your GitHub repository.
Add the interpreter your team wrote in
Problem Sets 10 and 11 to that directory and push it again
to your repository.
You will then be ready to work on the following questions.
Sumsq2.javaas necessary to make it use loop syntax instead of tail recursion, but do not modify it any more than necessary. (In particular, do not use any mathematical formulas that would change its asymptotic running time.) Then run the benchmarks indicated for question 1 in the
report.txtfile, and add the results you observe to that file.
Run the benchmarks indicated for question 2
report.txtfile, and add the results you observe to that file. Then answer the question asked at the end of that file.
After you have modified
report.txt, push your files
to your repository.