Benchmark results for Snow Leopard: 32- versus 64-bit kernel

It was recently revealed by ZD Net that Apple’s new Mac OS X release, dubbed Snow Leopard, would default to a 32-bit kernel despite being largely portrayed by Apple as the final step in the Mac’s journey to being a fully 64-bit OS. The reactions, as with anything Apple-related, were sheer polemic. Just check out the comments on the ZD Net article, and you’ll see what I mean. The Apple apologists played it off as if 64-bit code is pointless in the kernel, despite being indispensable in applications. The Microsoft partisans acted as if Apple had just halved the speed of the entire OS.

So, what’s the truth? I ran a few quick benchmarks to find out. To isolate the effects of the kernel from the benchmark software itself, I used a 32 bit benchmark program, XBench, so that the only thing that would be changing between the two runs was the kernel. (My understanding of Mac internals is not great, so I hope I wasn’t making a poor assumption here.) The results were interesting. As one might expect, neither side is entirely right or wrong.

The biggest difference was in memory allocation, where the difference was almost a factor of two. The next biggest difference was in the thread benchmarks, where the 64-bit kernel had a roughly 30% improvement in time. Finally, the 64-bit kernel had over a 10% improvement in large block disk transfer speed. These results seem plausible, as all involve tasks where the kernel plays a relatively large role. The rest of the benchmarks, mainly graphics and computation, had little or no improvement, as one would also expect.

So, it seems that while it’s true Apple isn’t doing a terrible thing by defaulting to the 32-bit kernel, it’s certainly also the case that you’re leaving some speed on the table. This is especially true for the disk transfer benchmarks, which can have a real effect on the perceived responsiveness of the computer.

The complete results for my are below. The test computer was a 2.53 GHz Mid-2009 MacBook Pro.

64-bit Kernel

Results	127.31
CPU Test	180.05
  GCD Loop	285.50	15.05 Mops/sec
  Floating Point Basic	145.63	3.46 Gflop/sec
  vecLib FFT	120.72	3.98 Gflop/sec
  Floating Point Library	280.68	48.88 Mops/sec
Thread Test	331.22
  Computation	500.00	10.13 Mops/sec, 4 threads
  Lock Contention	247.63	10.65 Mlocks/sec, 4 threads
Memory Test	200.62
 System	255.76
  Allocate	618.01	2.27 Malloc/sec
  Fill	185.89	9038.61 MB/sec
Copy	211.31	4364.56 MB/sec
 Stream	165.04
  Copy	157.53	3253.68 MB/sec
  Scale	155.20	3206.42 MB/sec
  Add	175.03	3728.48 MB/sec
  Triad	174.48	3732.49 MB/sec
Quartz Graphics Test	190.82
OpenGL Graphics Test	86.25
User Interface Test	245.26
Disk Test	48.75
 Sequential	101.56
  Uncached Write	120.97	74.27 MB/sec [4K blocks]
  Uncached Write	119.43	67.57 MB/sec [256K blocks]
  Uncached Read	64.63	18.91 MB/sec [4K blocks]
  Uncached Read	137.50	69.11 MB/sec [256K blocks]
 Random	32.07
  Uncached Write	11.66	1.23 MB/sec [4K blocks]
  Uncached Write	77.18	24.71 MB/sec [256K blocks]
  Uncached Read	59.85	0.42 MB/sec [4K blocks]
  Uncached Read	107.70	19.98 MB/sec [256K blocks]

32-bit Kernel

Results	122.67
CPU Test	179.50
  GCD Loop	295.89	15.60 Mops/sec
  Floating Point Basic	141.66	3.37 Gflop/sec
  vecLib FFT	120.19	3.97 Gflop/sec
  Floating Point Library	283.69	49.40 Mops/sec
Thread Test	260.69
  Computation	396.28	8.03 Mops/sec, 4 threads
  Lock Contention	194.23	8.36 Mlocks/sec, 4 threads
Memory Test	190.01
 System	234.38
  Allocate	369.54	1.36 Malloc/sec
  Fill	186.29	9057.73 MB/sec
  Copy	211.60	4370.52 MB/sec
 Stream	159.77
  Copy	153.34	3167.08 MB/sec
  Scale	150.01	3099.22 MB/sec
  Add	169.51	3610.92 MB/sec
  Triad	168.11	3596.34 MB/sec
Quartz Graphics Test	187.39
OpenGL Graphics Test	87.04
User Interface Test	237.42
Disk Test	46.82
Sequential	90.51
Uncached Write	118.31	72.64 MB/sec [4K blocks]
Uncached Write	79.22	44.82 MB/sec [256K blocks]
Uncached Read	60.05	17.57 MB/sec [4K blocks]
Uncached Read	154.69	77.75 MB/sec [256K blocks]
Random	31.58
Uncached Write	11.29	1.20 MB/sec [4K blocks]
Uncached Write	76.69	24.55 MB/sec [256K blocks]
Uncached Read	60.83	0.43 MB/sec [4K blocks]
Uncached Read	116.08	21.54 MB/sec [256K blocks]

18 responses to “Benchmark results for Snow Leopard: 32- versus 64-bit kernel”

  1. Do you have 10.5 results for the same benchmark by any chance? I’m interested to know how much disk performance has improved betweel 10.5 and 10.6.



    • I wish I’d had the foresight to do that, but I didn’t. I still have a USB drive with 10.5 on it, and if I get a chance I’ll rerun the benchmarks with Leopard.

  2. Please explain what you mean by “defaulting to 32-bit operation”. Your tests indicate that full 64-bit performance is available, so why in the world would the kernel default to 32-bit operation. The only rationale I can come up with is to use less memory. Is that possible? If not, can you explain what might be the reason?

    I have 64-bit applications that seem to run in full 64-bit mode under Leopard. Is there any reason to switch to SL under such circumstances?


    • The kernel defaults to 32-bit operation because to do otherwise would break a lot of third-party extensions. Apple apparently felt that it was best to go with the 32 bit kernel for now, to give developers a chance to port their extensions to 64-bit. I think this was probably a good call, since the performance hit is admittedly small, and the way the Mac works, applications can be fully 64-bit even if the kernel is 32-bit. Furthermore, the Mac handles memory in such a way that the kernel won’t actually need a 64-bit address space for a long time, and individual applications can still use a 64-bit space.

      • Completely agree with this. I don’t think it’s fair to compare them at the moment cause we all know how bad Vista was at launch. Snow Leopard just needs some time for devs, thats all. Logic Pro still has a 4GB memory ceiling which is very annoying.

  3. I dual boot my 8 core Mac Pro with 1 terrabyte to each OS. It’s sad but true… Vista 64 is much faster than the new Snow Leopard. I just did my own comparisons. While I still believe OS X is the better OS, it’s true… Vista 64 is much faster. Think twice before you knock it. I know I will.

    (My rig consists of 8 cores and 16G of RAM. This plays a big part)

    • Interesting. But how is it faster? To what kind of benchmark are you referring? My experience with Vista 64 on an eight core machine was less than stellar, but that was admittedly only based on working with a single application (MATLAB).

      • Admittedly, my test were not formal. I am merely basing this of internet browsing, app launch time but more importantly audio programs which are consuming large amounts of RAM. I could be incorrect as to which one’s faster, but I am sure that Vista 64 performs well despite being very poorly designed.

    • Interesting. I have done similar comparisons on my Nehalem Mac Pro which sounds like the machine you are using. Using compiled Fortran code, Leopard as slightly faster than Vista 64 running molecular orbital calculations. The difference was slight as both operating systems seemed to provide full 64 bit performance.

      Please explain “much faster” and the type of code you were running.

  4. Howdy very cool website!! Guy .. Excellent .. Wonderful ..
    I’ll bookmark your site and take the feeds additionally?

    I’m satisfied to seek out so many helpful information right here within the put up,
    we need work out more strategies in this regard, thank you for sharing.
    . . . . .

  5. I want to get across my appreciation for your generosity in support of persons that have the need for help on this issue. Your personal dedication to getting the solution all-around had become unbelievably interesting and have frequently allowed some individuals just like me to reach their dreams. The helpful suggestions indicates a lot a person like me and a whole lot more to my mates. Thanks a ton; from each one of us.

  6. Wow que sé Me encantaría saltar la visita a la oficina del médico ! Por supuesto , pude ver algunas trampas con este , pero esto podría ser un gran primer paso , como padre , sería genial poder reunirse con un médico sobre el vídeo y hacer que tal vez proporcione un diagnóstico sin tener que arrastrar un niño enfermo a la oficina . Se me ocurren un montón de usos para esto. Buen artículo, Jennifer !

Leave a Reply

Your email address will not be published.