<< Back to previous view

[TBENCH-8] Alioth mandelbrot Created: 13/Sep/11  Updated: 15/Nov/11  Resolved: 15/Nov/11

Status: Closed
Project: test.benchmark
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Enhancement Priority: Major
Reporter: Paul Michael Bauer Assignee: Unassigned
Resolution: Completed Votes: 0
Labels: None

Attachments: File mandelbrotR1.diff    
Patch: Code and Test
Approval: Ok

 Description   

Implement mandelbrot as described at http://shootout.alioth.debian.org/. See http://dev.clojure.org/display/testbenchmark/Alioth+Benchmarks for an overview.



 Comments   
Comment by Paul Michael Bauer [ 13/Sep/11 6:06 AM ]

This is a first pass at a mandelbrot that takes advantage of clojure 1.3 performance features.

Approach:
Avoid idiomatic functional code.
Extensive iteration, in-place mutation, primitive arrays, manage our own threads etc. Not "pretty."
(currently .8 to .9 % of fastest java version).

Tests:
Correctness tests, verified against a set of known-good resource files.

Caveats:
This is the first pass and my first time writing optimized clojure 1.3. I'm sure there are things that can be improved, so any feedback welcome.

Future:
I've included a modified version of the fastest java program in the patch as I've found it useful for comparison
(# time script/run_java alioth.java.mandelbrot 16000)
One thing we don't have is repeatable performance metrics/tests.
One approach would be to have tests that fail whenever the clojure version falls below a certain percentage of the java version.
That's something I'm working on.

Comment by Paul Michael Bauer [ 13/Sep/11 9:00 PM ]

Per discussion on mailing list (https://groups.google.com/d/topic/clojure-dev/Kr5teQh69Pw/discussion) removed java files.
Files pushed.

Comment by Stuart Halloway [ 15/Nov/11 7:29 PM ]

Paul, it is fine for you to close tickets yourself on contrib projects (all the notes about "core team only" apply to Clojure itself, not the contribs).

Generated at Fri Aug 29 21:14:03 CDT 2014 using JIRA 4.4#649-r158309.