为什么软件开发滞后于硬件

你为什么在你的64位计算机上使用32位软件?如果你花2500美元买了一台顶级的索尼BRAVIA 52英寸1080p 120Hz平板液晶高清电视,你会使用兔耳天线来接收电视信号吗?我不这么认为!

尽管UNIX的64位软件已经有几十年的历史了,但64位操作系统和应用程序的大规模可用性和采用速度很慢。从理论上讲,如果在64位cpu驱动的PC上运行64位软件,应该会获得更好的性能。在实践中,这并不是那么明确。没有为64位处理器优化的64位程序实际上可以运行更糟而它的32位孪生版本则可以在32位或64位上运行Windows Vista

为了利用64位处理器的性能和特性,操作系统和应用程序都必须针对新的处理器进行优化。然而,许多开发人员认为32位软件“足够好了”。他们依赖于处理器速度的提高为了掩盖32位代码在64位处理器上固有的低效率。这种低效率可能不是微不足道的,因为对32位代码的每次调用都必须转换为64位代码才能运行。例如,在Windows Vista 64位, 32位应用程序必须是通过WoW64 (Windows上的Windows)子系统来运行。其他操作系统也使用类似的方法。

通过避免这种翻译过程,任何编写良好和优化的64位程序都会运行得更快。此外,任何需要访问大量内存的应用程序,例如数据库或者模拟,应该在64位环境中更有效地运行。

当然,开发人员在考虑为64位体系结构优化自己的代码之前,可能会遇到障碍。Jerry Young是。net的开发人员美国处理他说:“有些人被困在32位的土地上。”例如,Young说,微软的IIS (Internet Information Server) Web服务器可能有问题Windows Server 2003因为IIS不支持混合模式。“具体来说,我有一个c#应用程序安装在64位Windows 2003上,IIS设置为在64位中运行。问题是:我有一个遗留32位c++ DLL他解释道。

但是集成问题并不是一些开发人员不将他们的应用程序迁移到64位的唯一原因。

Cognition IP Solutions的首席执行官Karl Ginter表示,有些开发者并不在乎这些语言或开发环境(如Java、闪光或Perl)处理所有潜在的问题(或不能)。金特说:“64位在这些情况下似乎没有多大帮助。(代码)运行得更快一点,但大多数机器甚至都没有接近cpu限制。”Ginter补充道:“这就是虚拟化兴起的原因。”

Ginter认为32位到64位的切换是相当容易的,但通常没有真正令人信服的理由去改变。“当然,在某些特定的应用中,64位是有意义的,”他承认,比如大型数据库虚拟化服务器.但他补充道:“我认为,只有当64位而不是32位成为默认配置时,才有可能大规模转向64位。在我看来,这是一个乞求全世界80%的人解决问题的解决方案。”

Brian Masinick是富达投资集团一位著名的Linux爱好者对此表示赞同。“我甚至对使用64位个人电脑操作系统有保留和担忧在Linux空间中在美国,这几乎是可以做到的。有工具,有大量的应用程序,但获得像Flash播放器这样的东西——尽管这些也是可以做到的——有一个很糟糕的名声,就是有问题。”

简而言之,这些程序员认为我们不会以任何速度向64位迈进,因为技术增强还没有被认为是必要的。Masnick补充说:“我一直在我的Digital UNIX AlphaStation上运行64位(它运行的是Tru64 UNIX),但除非我能找到一个干净、便宜、100%工作的系统,否则我不会那么做。我拥有的东西在随意使用时似乎还不错,这是我在家里大多数时间真正需要的东西。”对于Masnik来说,64位应用程序是“蛋糕上的糖衣,如果我能负担得起蛋糕的话”。

当然,这完全取决于你所处的位置。在服务器领域,64位通常是更好的选择。Jari Tavi,首席执行官Hotelzon国际他记得自己曾作为架构师参与过一个软件开发项目,当时团队在蜂窝网络MSC(移动交换中心)上遇到了问题。MSC在某些业务案例中存在可伸缩性问题。“在后端系统中,我们用64位寻址的内存映射稀疏文件取代了整个Oracle数据库。我们的性能提高了100到1000倍。‘替换代码’的核心只有300行c。所以,如果你知道自己在做什么,答案是肯定的,你可以改变一些东西。”

没有那么引人注目,但仍能说明问题的是,该公司的软件开发人员Michael TajmajeriGraphicsGroup.com移动了一个中型的Windows应用程序(超过一百万)行代码)到64位。他说,微软的开发工具,如带有Vista x64的Visual Studio 2008,让这变得相当容易。“我有一个模块由于在x64模式下增加了寄存器,性能提高了30%。”

Tavi补充说,通过正确的方法,向64位迁移对程序员来说不会有太大麻烦。他表示:“一些供应商采取了所谓的‘LP64’方法,我个人极力提倡这种方法。”对于Tavi来说,LP64的优点(int变量是32位宽,而long变量和指针是64位宽)是编写良好和行为良好的代码只需要最小的更改。他说:“如果你的应用程序有问题,99%的情况下,那是一个bug——或者至少是糟糕的编程——而修复可以提高代码的质量。”“使用LP64,你将获得几乎无限的内存和文件寻址,编程成本为零,你可以打破2G/4G限制等。所以它本身就很酷!”

还有其他64位数据模型。对于ILP64,所有三种数据类型都是64位宽;在LLP64中,只有long-long是64位的。但是,LP64在开源和专有操作系统和编译器中都得到了广泛的支持。编译器为AIX,FreeBSD、HP、Linux、Mac OS X、Microsoft Visual c++、Solaris和IBM z/OS都支持LP64。

该公司的数据库架构师克里斯·布朗(Chris Browne)说,64位开发的另一个大优势是Afilias加拿大是在C语言中引入了64位类型。这很重要,Browne说,因为C语言经常是其他语言的基础。“[64位支持]作为C99的一部分正式添加到C中,C99在过去的9年左右一直渗透到C的实现中,因此也渗透到C中实现的其他东西中,如操作系统、框架、其他语言(Perl, Python, PHP等等)、数据库实现、库和框架。”

Browne声称,编写程序的开发人员写得很好,可移植代码当使用整数和指针都是64位长的编译器编译时,经常会发现64位版本“很自然地工作”。

那么,如果找到64位VPN (Virtual Private Network,虚拟专用网)客户机或硬件驱动程序是一件很容易的事情,为什么呢?为什么没有更多的64位程序和操作系统可用?

答案是:视情况而定。Browne指出:“这在Windows上可能更有问题,因为在Windows上,许多内部组件都与非常具体的数据表示绑定在一起。这不是什么新鲜事。在Windows 3.1(它有大量的16位依赖,因为它第一次部署在MS-DOS上)和Win32之间的过渡存在着巨大的问题。这些生态系统之间的转变是从一个硬编码了大量16位主义的生态系统,到另一个硬编码了等价的32位主义的生态系统。”

虽然它没有当时那么麻烦,但Windows的64位版本仍然存在类似的问题。并不是所有的64位操作系统,即使具有相同的名称,工作原理也是一样的。阿列克谢·罗伊特曼(Alexey Roytman)是HyperRoll,他指出,在安腾上运行的Windows 64位是……不同。“由于软件仿真,32位应用程序运行缓慢,”他说。“微软命令工具(你可以免费获得的工具)与安腾的交叉编译存在一些问题。”

Browne继续说道:“相比之下,在UNIX上,[代码]往往需要在Solaris、HP/UX、AIX、DG/UX、SCO、irix之间移植——我可能忘记了一些——可移植性的需要要求更细致的处理。”因此,Browne说,开发人员将16位应用移植到32位应用,导致这些应用几乎已经可以移植到64位。

也许我们还没有看到从32位操作系统和应用程序大规模迁移到64位操作系统和应用程序的一个最大的原因是Shane O'Donnell提供的原因BlueStripe软件:“没有明确的强制功能来终止32位工作。”奥唐奈认为:“当微软停止生产32位操作系统时,整个行业将发生转变。这一切都是关于操作系统和初级程序员的最低入门门槛。”

所以,在最小公分母是64位的那一天到来之前,看起来我们将继续不得不在我们的64位系统上处理32位软件及其怪癖:无论我们是喜欢它、需要它还是想要它。

这个故事,“为什么软件开发落后于硬件”最初是由首席信息官

加入网络世界社区足球竞猜app软件脸谱网LinkedIn对自己最关心的话题发表评论。

版权所有©2009 IDG Com足球竞彩网下载munications, Inc.

SD-WAN买家指南:向供应商(和您自己)提出的关键问题