To test the performance of individual frameworks and hardware, I have used a simple raytracer as a visual benchmark.
A raytracer is well-suited, because
The following table contains the results.
| Language | Technique | CPU/GPU | Cores/SMs/Threads | Avg FPS/s | Min FPS/s | Max FPS/s |
|---|---|---|---|---|---|---|
| C++ | Sequential | CPU | 1 Core = 1 Thread | --.-- | --.-- | --.-- |
| C++ | POSIX Threads (pthreads) | CPU | 4 Cores * 2 Hyperthreads = 8 Threads | --.-- | --.-- | --.-- |
| C++ | OpenMP | CPU | 4 Cores * 2 Hyperthreads = 8 Threads | --.-- | --.-- | --.-- |
| C++ | NVIDIA CUDA | GPU | 16 SM = 512 Cores = 512 Threads | --.-- | --.-- | --.-- |
| C++ | OpenCL | GPU | 16 SM = 512 Cores = 512 Threads | --.-- | --.-- | --.-- |
| C++ | Cell-Processor | CPU | 6 SPUs | --.-- | --.-- | --.-- |
| Haskell | Sequential | CPU | 1 | --.-- | --.-- | --.-- |
| Haskell | par |
CPU | 4 Cores * 2 Hyperthreads = 8 Threads | --.-- | --.-- | --.-- |
| Java | Sequential | CPU | 1 | --.-- | --.-- | --.-- |
| Java 7 | ForkJoinPool |
CPU | 4 Cores * 2 Hyperthreads = 8 Threads | --.-- | --.-- | --.-- |
Do you have questions? Send me an email!
Copyright © 2007-2012 Jörn Dinkla. All rights reserved.