我们来看看发布64位软件需要哪些条件:
鉴于大部分Windows应用还是用C++开发为主,尤其是GUI客户端,所以我们只谈谈C++。
1. 平台支持64位,Windows本身一直有64位版本,但是用户安装的普及率就呵呵了
2. 编译器支持64位,VC6不行,新版本肯定没问题
3. Framework支持64位,主流基本OK,但是众多第三方开源库就不保证了
4. 调试测试工具支持64位,性能测试,内存泄漏检测,自动化测试工具,崩溃分析,静态代码分析等等,这个涉及的东西太多,不保证都有64位支持
5. 第三方辅助外挂插件等,这些东西也是生态环境的一部分,没有也不行,它们的开发者大多数小公司或个人,未必有能力或意愿发布支持64位的版本
6. 程序员的能力,开发64位同时还要保证32位也是可用的,一份代码同时兼容32/64对程序员技能是有较高要求的。
再看看带来的好处:
1. 能用更大的内存,大约大于1.6GB,不过普通程序哪需要这么多,如果真的有这么多,十有八九是出bug了,内存泄漏。
2. 会有更好的性能,大约能提升10 - 20%左右,但是如果程序中依赖汇编性能优化,还需要开发64位汇编,否则性能可能会比32位还差。
总的来说,开发64位应用的外部条件成熟度只有一半多一点,开发过程中多少都会遇到一些64位特有的麻烦。所以绝大多数开发商对于发布64位版本都是没什么动力的。
64位普及度最高的平台是 iOS,从iPhone5s开始CPU都是64位的了,xcode编译同时生成32/64两份代码,无需工程师干预,AppStore强制要求支持64位,否则不让上架。所以整个iOS生态系统很快就切换到了64位,甚至有的应用已经不再发布32位版本了。iOS是个新系统,没有太多历史包袱,大部分应用代码规模非常小(相对于windows应用来说),容易移植。Apple只做个人消费市场,没有企业级客户,所以可以半强制用户升级软硬件,32位很快就被淘汰了。