A 64-bit reality check

To the less technically-knowledgeable folks out there: Please stop asking for a 64-bit version of iTunes or DVD Player or Fireworks or whatever, blindly assuming that “number of bits” equals “goodness.” This is, of course, all coming up as Apple’s Mac OS X Snow Leopard release is due shortly. Let’s refer to Apple’s developer documentation on the subject:

From Apple’s MacOS X Technology Overview:

For many developers, however, compiling their code into 64-bit programs may not offer any inherent advantages. Unless your program needs more than 4 GB of addressable memory, supporting 64-bit pointers may only reduce the performance of your application.

Not convinced? Let’s try Apple’s 64-bit Transition Guide, “Common Misconceptions”:

Myth: My application will run much faster if it is a “native” 64-bit application.

Fact: Some 64-bit executables may run more slowly on 64-bit Intel architectures because of increased cache pressure.

On Intel-based Macintosh computers, you may see some performance improvement. The number of registers and the width of registers increases in 64-bit mode. Because of the increased number of registers, function call parameters can be passed in registers instead of on the stack. The increased register width makes certain performance optimizations possible in 64-bit mode that are not possible in 32-bit mode. These improvements will often (but not always) offset the performance impact caused by increased cache pressure.

It bums me out that I’ll be seen as “The 64-Bit Wet Blanket Guy,” especially when Adobe has been way out ahead of the pack on the Mac*, shipping the 64-bit-native Lightroom 2 for more than a year. I think 64-bit is great, and it can yield huge performance gains in Photoshop–sometimes 10x or morewhen you’re using huge files that demand very large amounts of RAM (4+ GB). But I’m not willing to blow a bunch of smoke on the subject, nor do I like seeing developers–Apple, Adobe, or otherwise–get browbeaten due to ignorance.

By the way, someone will pop up momentarily to talk about how having access to more processor registers makes apps faster. That’s true in some cases (e.g. Apple touts that you can open PDFs 20% faster in 64-bit mode), but it’s not a big win for a highly tuned application like Photoshop. I’ve supplied more details about that in a separate post.

* Up until now (the release of Snow Leopard), who else is even shipping 64-bit Mac apps? My searches have turned up almost nothing.

43 thoughts on “A 64-bit reality check

  1. Our experience with developing MATLAB is consistent with what you say – going to a 64-bit OS is not an automatic performance win and can sometimes slow down performance because of the increased pointer size and cache effects. The real benefit of using a 64-bit version of MATLAB is when you are working with very large data sets.
    The 64-bit Mac version of MATLAB is targeted for release next month:
    [Thanks for the info, Steve. (But I mean, what would you know, writing code and all? I want 64 bits to make my music play really fast!! ;-))
    Incidentally, here’s an article comparing apps on Vista 32 vs. Vista 64. There’s a huge range of results, and in many cases the 32-bit versions are much faster. Again, none of this means that 64-bit is “bad” in the least. It just means that it’s not some magic elixir that one rubs into software to make it mo’ betta. –J.]

  2. Tweetie is the only 64-bit application currently on my system. Kind of a drag that it’s the only one.
    [Actually I thought they pulled 64-bit support & are waiting until 10.6 to restore it. (Of course now I can’t find the release notes.) –J.]

  3. Snow Leopard will not be the end of the slow transition to 64-bit, mostly because not all drivers are 64-bit yet. That said, I would guess the vast majority of professional Photoshop users have more than 4GB of RAM in their systems (I have 12) and it is really irritating to see PS thrashing the scratch disk while leaving 2/3 of RAM unused because of its address space limitations (not to mention threading and parallelism limitations).
    [I hear you. I’ve said many times that no one is more frustrated than we are at the current state of affairs. We had a plan; the environment changed; and now we have a new plan (on which we’re executing as I type). –J.]
    I have a Canon 5DmkII and stitch panoramas, which means thrashing pretty much all the time. Right now, PS users are better served by getting a SSD to use as their scratch volume, but the whole concept is archaic and needs to be ditched.
    Yes, Lightroom is a 64-bit app, presumably because it uses a modern dynamic language based architecture (Lua) for the bulk of the UI instead of masses of legacy CodeWarrior C++ code.
    [CodeWarrior hasn’t been in the picture since CS2, as Apple made Xcode the only way to get to Intel. I don’t mean to offend you, but let me say that it’s not helpful just to throw in words like “CodeWarrior,” “Carbon,” etc. if you don’t really know what’s going on. –J.]
    Photoshop is long overdue for a rewrite. I am still running CS3 and will not upgrade until you have implemented 64-bit mode.
    [We’ve been rewriting Photoshop for a long time, but it’s a process that happens in chunks.
    And by the way, let’s put a stake in the heart of the idea that “rewriting” equals “making better.” If someone forced us to rewrite all the source code in Photoshop in Esperanto, I’m sure that given enough time we could do it. Would that make Photoshop a better application? Nope, just internally different–and the cost of that rewrite would have been significant (coming at the expense of rewrites you’d *actually care about*).
    Of course, if it Microsoft that were to require the use of Esperanto, users would say, “Those bastards!” And if Apple did it, the same people would say, “What the hell is wrong with the Photoshop team?? ‘Morto adobe, ĉiuj aklam pomo!'” –J.]

  4. I think there is a lot of mis-understanding when it comes to 64-bit and what it can and can’t offer.
    I for one will leave it up to Adobe to choose which of their products will benefit most from the move to full 64-bit.
    However, I do ask Adobe for two things. A) That they make sure that any program they don’t release as 64-bit native work reliably and correctly when that 32-bit program is used in a 64-bit OS. B) That they help push plug-in makers to put out 64-bit versions of their plug-ins so that of us that have 12GB of ram and Windows 7 64-bit can make use of the 64-bit windows, etc.

  5. Great post (as always) man! Thank you.
    I believe that Cinema4D is one of the first apps to come out as 64 bit on the mac after leopard was released. But don’t quote me on that.

  6. Which all has me scratching my head as to why WalMart, Sams Club, Best Buy etc are pushing 64-bit onto consumers.
    But what do I know, I’m only a geeklet. 🙂

  7. One small addition/clarification to remember — you don’t need 64 bit apps to utilize more than 4GB. You often have multiple Apps and the OS running, each of which can address a different 4GB (32 bits).
    So on many people’s workflows, where they are using 3-4GB, then the 32 bit limit can matter a lot (the thrashing).

  8. Hey John,
    Presumably 64 bit could benefit After Effects quite a bit, no?
    [Yes, most definitely–if you’re working on projects that would benefit from lots of RAM. Note, of course, that you can get some big performance wins using AE CS4 on a 64-bit OS with lots of RAM. –J.]
    Would love to hear more info from Adobe folks on the timetable & expectations for AE 64 bit on Snow Leopard.
    [I’ll ask the AE guys whether they’re ready to share more info. –J.]

  9. > Please stop asking for a 64-bit version of iTunes
    But what about the Adobe DNG Converter?
    This *seems* to be the kind of app that would run faster in 64 bits, since you mention Photoshop got significantly faster at opening large files in 64 bits. Reading/writing files is pretty much what the DNG converter does, after all.
    My RAW/CR2 files coming out of a Canon 5D MII are really big. A lot of time in my workflow is spent waiting for the DNG converter. I would love to see it run faster. This utility also seems small enough that maybe you guys would consider open sourcing it for us to port it to 64 bits or CUDA? (I know I’m asking too much here).

  10. Indeed. Good post. I can not believe after all of this time, this is still a topic that people are talking about. I guess marketing machines?
    There have been a lot of timings done – I personally did some. About 3 years ago, when this was a big topic originally, it looked to be a few percent slower just recompiling code for 64 bit. The big wins were for code that used 64 bit operations, like histograms. If one wants to accumulate a set of 32 bit numbers, it can overflow unless a 64 bit operation is used. This are simulated by using a few 32 bit operations, but can be faster and more direct with a 64 bit operation. Overall for a whole app, it was a loss.
    Facts need to win over marketing, but that never seems to be the case. Keep up the good fight.

  11. John, you asked why using registers can matter. When a function (or object method is invoked) parameters may be passed to that function. Each action may incur hundreds or thousands of these calls. In processors with limited register space, the parameters are passed on the stack which is main memory. Accessing main memory (even with a cache hit) is much slower that accessing a register in the processor.

  12. This is such a load of crap. Seriously. Adobe, your apps are bloated and sluggish under any conditions. Flash CS4 wasn’t usable until the 10.02 patch a year into its release. Illustrator takes over a minute to load on my 2.9ghz, 4GB machine.
    Its time you remade these apps. Clean them out and rebuild them in 64 bits and make them fast. Snow Leopard is basically an under the hood fixer upper only. CS5 should be the same. Don’t expect me to buy another sludge monster Creative Suite. I dont care if it reaches out of the computer and gives me a back rub. I want performance, not features.

  13. One thing I do take advantage off in Windows Vista x64 is that you can have more than 4Gb of RAM. Newer apps with more eye candy, more little improvements, more of everything also take more memory. I personally use Excel, Outlook, IM software, network monitoring, and not having 4 Gb of RAM would make my life slower.

  14. I don’t care if there’s a 64-bit version of iTunes, I’m just really confused as to why there’s a 64-bit iTunes installer that just installs the 32-bit version.

  15. Kara Brian..
    Can you please stop spamming?
    I’m a big esperanto fan, mi amegas la internacian lingvon, KTP, but..
    I’m tired of reading you doing propaganda everywhere without even reading what the blog is about.
    You give the impression that Esperanto speakers are stupid fanatics.
    Already there are more than sufficient prejudices about this language!

  16. I disabled 64 bit in Tweetie for Mac under 10.5 – there were too many issues. (Tweetie for Mac under 10.6 will automatically use 64 bit by default).
    Way too many users have stupid hacks installed on their systems that stomped all over 64 bit apps. Guess who they blame. Hopefully in Snow Leopard *every* app will crash if they keep those hacks installed, so at least Tweetie will be in good company.

  17. Hi Warren, I think the point is if you have a function that needs 6 input values, or an algorithm that is putting 3 or 4 inputs into one output, then more registers won’t matter at all. If you need 5 or 7, and you have 8, then going up to 16 or 32 gives you absolutely zero in those cases. So it is SOMETIMES a win to have more registers, depending on the code and problem, but not always a win. People assume more is better, but more is better only if you need more.

  18. Houdini from sidefx is another 64bit app for OSX. I don’t know Mathematica but Houdini is a big piece of code.

  19. If I remember well, any 32bit applications on any platform, even on a 64bit platform, is limited to 2gb of memory.
    [Well, yes and no. PS CS4 can address roughly 3.5GB on Mac 4GB on Win 32. After Effects & Premiere Pro CS4 can address 3.5-4GB *per core*. For these apps to address more RAM, they need to go 64-bit. –J.]
    But that doesn’t mean that more than 2gb of memory is needed neither for dvd player of itunes.

  20. Not sure how Windows works, but even 32-bit Leopard allows you to install and have access to over 4 GB of RAM. What 32-bits limits you to is how much RAM any individual app can grab for itself. So I can have a Mac Pro with 12 GB of RAM and I can use all of it even on 32-bit Leopard. However, 32-bit Photoshop can only take 3.5 GB (or something) for itself.

  21. If 64 bit is only/mostly useful when addressing lots of ram – how does Lightroom benefit from it. Does it address more than 4 GB of ram? Never quite understood that.
    [Yes, it does. –J.]

  22. John, as this is a technical argument, I wonder if you could address to point that on OS X, 32bit apps and 32bit kernel need to flush the transfer lookaside buffer twice (take from an Apple Insider article):
    Image: http://yfrog.com/7grtsl31j
    Image: http://yfrog.com/7grtsl32j
    From: http://bit.ly/GP3NL
    This seems like a good technical reason to at least have a 64bit app on a 32bit OS X kernel, or a 64bit kernel, which it appears Apple is failing to enable on a large number of contemporary hardware macs. Any developer thought on how serious this performance hit of 32bitness is?

  23. Drivers in 64 bit versions of Windows Vista (and Seven) need to be 64 bit as well. iTunes installs a number of drivers (an iPod one, an iPhone one, and an infamous CD burning driver, which at one point was the cause of Windows BSODs). Thus, the need for 64 bit installer.
    (Though technically, they could have easily made a single installer that can detect of you’re running 32 or 64, and install the right drivers.)

  24. What is stupid is rewriting code in Esperanto. Anyway what does that mean? In C or C++ (and others), you just need to define some macros and make some global changes. It’s fairly straightforward.
    On the other hand, writing in such a way that the user interface can be easily translated to Esperanto, and from there, to other languages, is slim. It is not as easy as one would think. The problem is that the file containing the text to translate should also contain enough information about the context. English is particularly ambiguous compared with Esperanto.
    On the systems I use, converting from 32bits to 64 merely requires a recompilation (yes in assembler as well as in HLL’s). The system routines (drivers) are written in 64 bits and the hardware is capable of switching from 32 bit mode to 64 automatically.

  25. I would like to see 64-bit versions of Adobe software available for GNU/Linux—starting with Flash Player and AIR, of course—just so we can run them on 64-bit systems without hassles. I may never need more than 4GB of memory for Flash Player or AIR, but just getting applications to run shouldn’t be hard.

  26. Remush:
    Porting software to 64 bits (regardless of API) is more than changing some macros and recompiling. There are lots of math assumptions that will have been made and need to be fixed. There are math errors that will have been made, but happened to work in 32 bits – those have to be fixed as well. There are changes in the APIs (because the APIs assumed 32 bit quantities/structures) – those have to be changed. Then there are APIs defined by the application that need to be changed, documented and tested.
    And assembly does not port that easily at all. It may compile for 64 bits, but as soon as you hand 32 bit assembly a 64 bit pointer, you will crash.
    Please, get some experience writing applications before commenting about how easy they are to write.

  27. One thing that’s overlooked, is that if the industry moved to 64-bit, MS and Apple could transition to “64-bit ASLR” (address space layout randomization – a security feature that prevents exploits by making the addresses of code and data structures hard to guess) for 64-bit apps. 64-bit ASLR would be an awesome security technology to have, because 32-bit ASLR is not as secure.

  28. Well,
    your knowledge of computers seems to be limited to those which hardware is allowing that much that you can afford
    with your limited budget.
    You seem ignoring that there are computers on the market with a superior architecture.
    Of course, bugs are bugs and it is a good opportunity to remove some of them (usually adding new ones) while converting from 32 to 64 bits.
    Again, if the original code were written by a professional (not by an amateur) it would be a piece of cake invoking the proper routine written in 64 bits from one running in 32 on a ad-hoc architecture.
    I guess this looks like magic to you on the proto-hardware you know.
    Perhaps it’s time to throw everything away and restart the job from scratch using modern programming techniques, allowing for change and further hardware improvements.
    BTW, I know more ways to wrongly pass and retrieve pointers that you can imagine as I had to fix amateur code.
    (unfortunately this happens in 64 bits as well as in 32 unless you program in JAVA. Amateurs, please use JAVA for God sake! It’s not that fast YET, but at least it does the job on the current (obsolete) hardware)

  29. Porting from 32 to 64 bits is just throwing a compiler flag and a few macros. Oh, and making sure every variable is typed correctly, making sure every structure still aligns correctly, making sure that the assembler optimized versions of routines are also staying aligned correctly wrt to C, C++ and ObjC versions above, across multiple platforms, fixing whole sections of the code which might be calling versions of the API’s that went away and finding or rewriting to alternatives, and maybe doing the same for driver changes. Oh, and in the case of Mac, since Apple killed 64 bit Carbon, it means rewriting major chunks of an App to port from a low level API to a higher level framework/class library, that may or may not have the functionality you need (and since there will be differences, it means you need to rewrite to those changes). All in dozens of libraries, plug-ins, code, teams, across a few millions of lines of code — while testing, finding and removing all new bugs introduced by any typos, mistakes or failing to catch and fix every change listed above. Simple, right? Just like sending a man to the moon: you only need more thrust than weight to create a rocket, and you’re there. Almost.

  30. I’ll second this. Anything that needs to talk to graphics hardware, traverse large amounts of data, or plugs into software that does *really* needs to be available in 64bit variations. All well and good to say that no flash application needs 64bits, but there are legitimate situations where adobe is losing out by failing to deliver a flash plugin for (say) 64bit browers.

  31. A lot of people are saying that if Apple breaks things going from 10.5 to 10.6, that it’s Adobe’s problem to fix it? Yet if the Microsoft broke iTunes 2.0 on Windows7, would you blame the Apple or Microsoft?

  32. The “marketing” happens because the general public seems to have a need to latch onto the latest “buzz”.
    Remember Intel and AMD pushing the Mega-Hertz on processors? The Megahertz Myth.
    And now – it’s how many Cores does your processor have?
    While on the software front it’s how 32-bit Apps are old and out-dated and even MS Word should be running in 64-bit mode. Can’t wait!

  33. Totally agree that 64-bit doesn’t make sense for everyone. I have a complex consumer application coded in .NET that runs three or four times as slow on x64 as it did on x86, and uses three times as much memory, unless you force it to run in 32-bit mode.
    I understand it’s due in part to non-optimized marshaling code. They’re working on that for .NET 4.0, which is nice, but we need speed now – and I’m willing to bet 32-bit will still have an edge due to increased pointer sizes (Windows Forms loves pointers).

  34. All I know is that I want my daily work flow FASTER same as most people. So I check the internet to see what people say about CS4. I’m currently using CS2. I read things like After Effects CS4 can utilize multiple cores IF you can allocate 2GB of RAM per core. OK, I also read you can access more RAM using a 64 bit OS. OK, so I go out and build a system with the Quad Core Phenom 2.6GHZ, 16GB of 800MHZ RAM, Dual ATI 4870 video cards running in crossfire, 2 Velociraptor’s(RAID 0) and Windows XP 64 bit. I install the 30 day trial of CS4 and it won’t install correctly. So I install Windows 7 RC1 64 bit and then reinstall CS4 trial. I haven’t had a hiccup or glitch in 28 days, runs great. HOWEVER, I’ve rendered the same AE CS4 projects on the Desktop System as well as on my 13″ black MacBook with Intel Dual Core and 2GB of ram with Bootcamp running WinXP 32 bit. They both render the projects in the same amount of time. I’m a little disappointed. Recently I purchased Swift 3D V6 which they claim utilizes multiple cores. When I render a project in Swift on the Desktop I CAN ACTUALLY SEE all four processors working to render the project twice as fast as the dual core Macbook renders. This is all I’m looking for. Adobe, I buy your software. I use it everyday to TRY and make a living. I don’t care if its 32bit, 64bit, more RAM less RAM, Esperanto or C++. I care about the end result. When I read about how your latest software is faster with today’s Multicore Processors and its ability to access more RAM that when I purchase this system IT IS FASTER, and I can see it’s faster. I can honestly say AE CS4 rendered 5% faster than AE CS2 on the same projects on the desktop. But it stayed the same on the Laptop.

  35. Let me just add that Adobe has improved their products tremendously from my viewpoint. I do Graphic and Web design, Video, CAD and 3D. I use the entire Adobe suite in some fashion with all my work. I like the CS4 suite A TON better than CS2. However, given the availability of today’s multi-core processors, massive amounts of RAM and multiple GPU’s in a home desktop PC for little cost. I just wish ALL the Adobe products utilized multi-cores, gpu’s and tons of RAM better so I noticed a GREATER speed improvement with the CS4 suite. That’s my opinion, but I’m just an artist.

  36. Begin to make softwares that are not so heavy and slow and use tons of RAM for nothing …
    And what about this crap of Flash Player ???? 100 % of CPU and 90 % of RAM to play crappy ads on a web page !
    Are you kiding John Nack ??? !
    [What does this have to do with 64-bit? –J.]
    Go to work on optimisation of your softwares first, because you have work to be done to unbloat them and make them fast !
    I want the reactivity of Photoshop 7 and Illustrator 10, plus a Flash that works like when it was made by Macromedia !
    Then you will be able to say what you want about others, but for now it doesn’t look for tomorrow ….

  37. People are missing the main reason for 64 bit. Stability is way better than 32 bit. I been using windows 64 bit OS for Years now. I noticed less BSOD. Fewer reinstalls of OS. So I would not say keeping 32 bit is better just because its faster. Don’t you remember the saying “Quality not Quantity”. Apparently no one wants Quality anymore.

Leave a Reply

Your email address will not be published. Required fields are marked *