Different implementations of a simple Collatz iterator and their performance

From ScienceZero
Revision as of 22:36, 2 January 2009 by Bjoern (Talk | contribs) (Vista 32, 2.66 GHz core 2 E66750)

Jump to: navigation, search

The Collatz conjecture was proposed by Lothar Collatz in 1937. The conjecture is also known as the 3n + 1 conjecture.

The procedure is that if n is divisible by two then divide by two, else multiply by 3 and add 1, iterate until n reaches 1. The unproven conjecture is that for all values of n the procedure will always reach 1.

The benchmark times the iteration of the 226 first values of n.

Visual C++

Vista 64, 2.4 GHz core 2 Q6600

  • 22.1s - 64 bit exe, one thread, unrolled 1000 times
  • 30.5s - 64 bit exe, one thread, unrolled 10 times
  • 45.9s - 32 bit exe, one thread, unrolled 1000 times
  • 49.2s - 64 bit exe, one thread, not unrolled
  • 53.3s - 32 bit exe, one thread, unrolled 10 times
  • 76.1s - 32 bit exe, one thread, not unrolled

Vista 32, 2.66 GHz core 2 E66750

  • 41.3 - 32 bit exe, one thread, unrolled 1000 times
  • 47.7 - 32 bit exe, one thread, unrolled 10 times

Visual Basic 2008

Vista 64, 2.4 GHz core 2 Q6600

  • 55.4s - .net exe, one thread

Vista 32, 2.66 GHz core 2 E66750

  • 66.4 - .net exe, one thread
  • -- .net exe, two threads

x86 assembly language

CUDA

GeForce 1.625 GHz GTS 512

  • 2.3s - 128 blocks x 256 threads

BSGP

Conclusion

External links