Geekbench 4.3

Geekbench 4.3, the latest update to Primate Labs' popular cross-platform benchmark, is now available for download. Geekbench 4.3 adds native support for Windows on ARM devices. Find out more about Geekbench 4.3 on the Geekbench Blog.

Primate Labs Acquires VoodooPad

I'm pleased to announce that Primate Labs has acquired VoodooPad from Plausible Labs. You can find out more about the acquisition on the VoodooPad Blog.

Geekbench 4.2

Geekbench 4.2, the latest update to Primate Labs' popular cross-platform benchmark, is now available for download. Geekbench 4.2 re-introduces the Battery Benchmark on Android and iOS. Find out more about Geekbench 4.2 on the Geekbench Blog.

Geekbench 4.1

Geekbench 4.1, the latest update to Primate Labs' popular cross-platform benchmark, is now available for download. Geekbench 4.1 adds support for Metal on macOS and iOS. Find out more about Geekbench 4.1 on the Geekbench Blog.

Geekbench 4

I'm excited to announce Geekbench 4, the latest version of Primate Labs' popular cross-platform benchmark, is now available for download. Geekbench 4 features improved CPU benchmark tests and new GPU Compute benchmark tests. Find out more about Geekbench 4 on the Geekbench Blog.

Geekbench 3.4.1

Geekbench 3.4.1 is now available for download and contains an important security fix for OS X. It is a recommended update for all OS X users. Geekbench 3.4.1 features the following changes:

  • Changed to secure connections to download update information and release notes.
  • Updated comparison chart design to improve readability.
  • Updated Android, iOS comparison devices.

Geekbench 3.4.1 is a free update for all Geekbench 3 users.

Geekbench 2.4.4

Geekbench 2.4.4 is now available for download and contains an important security fix for OS X. It is recommended for all OS X users. Geekbench 2.4.4 features the following changes:

  • Changed to secure connections to download update information and release notes.

Geekbench 2.4.4 is a free update for all Geekbench 2 users.

Geekbench 3.4

Geekbench 3.4 is now available for download and features the following changes:

  • Added support for Intel SHA-NI instructions for the SHA-1 workload.
  • Added support to detect Low Power Mode on iOS 9.
  • Fixed L4 cache reporting on systems without an L4 cache.
  • Fixed errors that could occur when uploading results from Intel NUC systems.
  • Fixed interface issues on iOS 9.

Geekbench 3.4 is a free update for all Geekbench 3 users.

MacBook Air, Pro Benchmarks (March 2015)

Geekbench 3 results for the new MacBook Air and MacBook Pro models have arrived on the Geekbench Browser. I've generated some charts that compare the new Broadwell-powered laptops with their Haswell- and Ivy Bridge-powered predecessors.

Keep in mind that Broadwell is a "Tick" in Intel's "Tick Tock" model. Generally speaking "Tick" processors improve efficiency while "Tock" processors improve performance. As a result I do not expect the MacBook Air and MacBook Pro scores to increase significantly.

MacBook Air

Single-Core Performance

Multi-Core Performance

Single-core performance has increased 6% from Haswell to Broadwell, and multi-core performance for the i5 model has increased 7%. However, quite surprisingly, multi-core performance for the i7 model has increased an impressive 14%.

If you're thinking of buying the new MacBook Air I would strongly recommend the i7 processor. It has 20% faster single-core performance and 25% faster multi-core performance for only a 15% increase in price.

MacBook Pro

Single-Core Performance

Multi-Core Performance

Single-core performance has increased between 3% to 7% from Haswell to Broadwell, depending on the model. Multi-core performance has increased 3% to 6%. These sorts of increases are in line with what I would expect from a "Tick" processor.

I have no recommendations regarding the processor for the new MacBook Pro. The performance differences and the price differences between the processors are roughly equivalent.

Swift Performance in Xcode 6.3 Beta

Back in December we ported a few of our Geekbench workloads to Swift and compared their performance to the C++ implementations. With last week's announcement of a beta release of Xcode 6.3 we thought it would be a good time to revisit those results. In this post we find out whether the performance improvements in Xcode 6.3 Beta provide any speedup for our Swift workloads.

The following table shows the performance of the Swift workloads compiled with Xcode versions 6.1.1 and 6.3 Beta. We use the same optimizer settings as we did in December and use the same machine to run the tests. As before the averages are taken over eight executions of the workloads.

Workload Version Minimum Maximum Average
Mandelbrot Swift (6.3 Beta) 2.07 GFlops 2.49 GFlops 2.32 GFlops
Swift (6.1.1) 2.15 GFlops 2.43 GFlops 2.26 GFlops
C++ (6.1.1) 2.25 GFlops 2.38 GFlops 2.33 GFlops
GEMM Swift (6.3 Beta) 2.14 GFlops 2.18 GFlops 2.16 GFlops
Swift (6.1.1) 1.48 GFlops 1.59 GFlops 1.53 GFlops
C++ (6.1.1) 8.61 GFlops 9.92 GFlops 9.32 GFlops
FFT Swift (6.3 Beta) 0.25 GFlops 0.27 GFlops 0.26 GFlops
Swift (6.1.1) 0.10 GFlops 0.10 GFlops 0.10 GFlops
C++ (6.1.1) 2.29 GFlops 2.60 GFlops 2.42 GFlops

The improvements in the Xcode 6.3 Beta have provided a 1.4x speedup for GEMM and a 2.6x speedup for FFT over Xcode 6.1.1. Performance for the C++ workloads did not change, so we omit those numbers for the 6.3 Beta.

Our Swift FFT implementation got an additional speedup last week thanks to some performance patches from Joseph Lord (the code for the Swift workloads is available on GitHub). His optimizations include:

  • eliminate virtual function dispatches by making the Workload classes final
  • allow the compiler to do more inlining by moving the Complex definition into the same file as the FFT code
  • work around slow behavior when accessing an array of structs by changing the output array in FFT from a Swift array to an UnsafeMutablePointer<Complex>.

These changes provide a significant speedup for FFT of about 8.5x over our previous implementation:

Workload Version Minimum Maximum Average
Mandelbrot Swift with Joseph's patches (6.3 Beta) 2.32 GFlops 2.45 GFlops 2.40 GFlops
Swift (6.3 Beta) 2.07 GFlops 2.49 GFlops 2.32 GFlops
C++ (6.1.1) 2.25 GFlops 2.38 GFlops 2.33 GFlops
GEMM Swift with Joseph's patches (6.3 Beta) 2.01 GFlops 2.19 GFlops 2.13 GFlops
Swift (6.3 Beta) 2.14 GFlops 2.18 GFlops 2.16 GFlops
C++ (6.1.1) 8.61 GFlops 9.92 GFlops 9.32 GFlops
FFT Swift with Joseph's patches (6.3 Beta) 1.85 GFlops 2.31 GFlops 2.20 GFlops
Swift (6.3 Beta) 0.25 GFlops 0.27 GFlops 0.26 GFlops
C++ (6.1.1) 2.29 GFlops 2.60 GFlops 2.42 GFlops

After the improvements in Xcode 6.3 and some careful optimizations, the performance of the FFT workload is now within 10% of the C++ implementation. The optimizations might look strange to someone who hasn't read up on Swift internals, but they are easy to apply and can be used by any Swift programmer. If you try these optimizations in your own code, benchmark the changes carefully. They might not provide any speedup at all for your algorithm. They might even slow it down. Also keep in mind 6.3 is still in Beta and it could change before the final release.