到底是32位系统运行快还是64位系统快


首先声明一下,这个标题“到底是32位系统运行快还是64位系统运行快”的提法本身就是存在问题的,主要是由于很多网友把这个问题提炼的层次太高,那就是“我现在的机子是装32位系统快还是64位系统更快?”,所以就拿这个问题作为标题了,该问题网上少见作答,主要是因为及到方面太多,从软件到硬件全部都有涉及,并且衡量的标准也比较模糊,天缘在这里斗胆就从软件到硬件归纳分析一下,错愕之处敬请指教。

插入回复部分搜索引擎过来的网友:32位和64位系统安装软件也是需要对应位数的,32位系统无法安装64软件,64位系统同样无法使用32位软件,部分具有兼容模式的软件深入到内部实际上还是需要位数对应的,具体可参考下面的32位和64位系统区别文章。

这里要感谢一下网友jexleven,他在天缘的《32位和64位CPU、操作系统的区别 + 判断、使用建议》一文中的问道,“在硬件相同的情况下(且硬件支持64位、内存2GB),32bit的OS用32bit的3DSMAX渲染速度 和 64bit的OS用64bit的3DSMAX渲染速度,哪个快?”及“游戏的载入速度呢?例如《鬼泣4》,例如《金刚狼》,例如《巫师》...”,这个问题 应该是很多网友都会遇到的。

这里有个重要的条件,就是硬件条件相同且都支持64位和内存足够,这是目前主流硬件的基本配置了。问题中的渲染一词在同等条件下仍然是程序运行速度的问题(需要排除依赖显卡的独立部分,因为在Windows 7上很多渲染工作已转交给GPU来完成),天缘下面的回答也必须要以这个为节点或条件。问题2的游戏载入速度同问题1中的渲染,还有个比较特殊的地方,就是还跟DIRECTX版本和驱动等相关,所以也必须规定软件条件必须相同,只有位上差异,故仍是哪个更快的问题。

一、计算机操作系统和软件角度

首先看操作系统和上层软件,无论64位OS还是64位软件都是必须按照64位格式进行编译,也就是默认的字长64位,运行 时,除了一些特殊的独立计算,比如位运算,其它非标准字长变量运行时都是需要进行转换的。32位也是一样,这一点还看不出来哪个优劣(只指速度),即使硬件条件相同,实际上还是有速度上的差异,那就看谁的格式转换最少,这就决定于应用程序的类型和设计方法了。

操作系统也是软件,我们再看一下编译后的文件大小,大家可以看一下 Windows 7 64位版安装文件大小就知道了,肯定要比32位要大,这里问题就来了,同样一个个文件(打个比方),32位可能是1M,而64位的可能就是2M,那么从硬盘上读取就存在时间差异。所以文件大是个劣势。

到这里就可以看出不同版本OS或软件实际运行效率几乎相当(实际上程序的差异主要就是在类型转换上),速度因素主要决定于硬件,下面就来看一下硬件因素有哪些。

二、计算机硬件角度

1、物理硬盘的运行时间,64位系统肯定会让物理硬盘花费更多的时间,如果是固态硬盘则可以解决这个问题,物理硬盘的设计理念决定谁也改变不了这个结果,多读数据就是要花费更多时间,而固态硬盘可以完全按照64位来设计存储位宽,寻址时间几乎不受影响;

2、 再看CPU,现在的CPU都是按照标准64位总线宽度设计的(据说Windows 8可能支持128,也说不准CPU总线宽度还要向上加),(早期的CPU还是采用兼容设计的,也就是“假”的64位,这个就不说了,越分析越复杂了)。内 部各种运算机制都是对64位有利的,也就是说,大家让它算32位数,CPU都是需要“打向”兼容模式处理的。所以,单从CPU角度考虑(不计可能集成的前 端总线影响),64位速度会略胜32位。

3、内存方面,内存颗粒芯片大都是按照8位设计BANK重组,尤其是早期的内存条,当然现在也有16、32位宽,今后肯定也会出现64位宽内存芯片。目前来讲对32位、64位影响都很小,如果非得要分出胜负,那么就选32位吧。

4、 再来看看CPU的前端总线,早期的并行总线无论对32位和64位影响都很小,因为是信号都是大家一起走(手拉手一起过桥),今后的CPU到北桥之间(注: 现在有INTEL CPU集成了北桥,只不过把串行总线拿到内部而已)几乎都将采用串行技术,同等速率下(假设内存无影响下),肯定是32位数据传送更快,排队过桥肯定人少 的更快过去。

5、除此之外,实际上除了北桥和CPU和内存,主板上就没什么东西了,主体PCI总线几乎都是并行的,显卡模块也是独立出的,影响很小。

三、总结:

1、纵观上述分析,所以在相同的硬件环境下,天缘这里需特别提到,这个环境必须要包含到硬盘或CPU的串行总线(原因是这两者影响最大,原因下面分析),64位的肯定没有32位快。

2、有意的人为设计出使用固态硬盘和全并行环境,那么两者理论速度相当,目前业界还没到这个水平和需求的时候。反之,也可以有意的人为设计出让32位运行慢,而64位运行快的系统。

2、64位系统和软件的重要优点不能不提,那就是更加精确、精细。jexleven的问题也出来结果了,那就是玩3D游戏,64位界面绝对要比32位界面更加漂亮,音质更好,还有一堆“更大"(内存更大、硬盘更大,理论上并行的东西支持也更多),试试便知。

3、以后如果使用固态硬盘或把普通硬盘的瓶颈问题解决,并且前端总线速度跟上去,那么64位系统运行速度将会有较大提升,与32位系统速度差距也会越来越小,当然了,使用专业的测试软件仍然是可以测试出差距的(架构可能调整,结果暂时也无法确定)。

天缘补充说明:

1、上文关于64位运行速度问题的分析,天缘做了检查和括号定语标注,但仍然有些地方不太严谨,天缘无法在这么短的篇章内一一详述,只希望大家从硬盘读取和写入、CPU的前端总线这两个最重要的差异点阅读,象征性的得到结论就可以了。

2、32位系统运行快是指普通应用角度全局考量的结果,并非表示每个程序都一定是32位比64位快。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/351391.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux系统证书存储,Linux系统下如何配置Nginx的SSL安全证书

刚刚介绍了ownCloud的安装,有朋友问我SSL是怎么配置的,哎,为什么不去官方找,却来找我要呢,好吧,我知道你懒得看那些英文,我就介绍一下我是怎么一步步在Nginx上配置SSL的吧。首先你要确保你安装了…

命令界面:使用Java中的动态API处理Redis

Redis是一个数据存储,支持190多个已记录命令和450多个命令排列。 社区积极支持Redis开发; 每个主要的Redis版本都附带新命令。 今年,Redis向第三方供应商开放,以开发可扩展Redis功能的模块。 对于客户端开发人员和Redis用户而言&a…

Python数据库连接池DBUtils

DBUtils是Python的一个用于实现数据库连接池的模块 此连接池有两种连接模式: DBUtils提供两种外部接口: PersistentDB :提供线程专用的数据库连接,并自动管理连接。 PooledDB :提供线程间可共享的数据库连接&…

够用的 Python 写日志的知识——标准日志模块logging简介

前一段工作的时候用到了python写后台系统,需要把一些系统的行为记录下来。本着不要去重复发明轮子的精神,就去搜索了一下python的系统库本身是否有写日志的模块。果然有。python语言作为一门接口简单,标准库强大的语言,果然没有令…

vivox7刷linux系统,Vivo 找来宋仲基帮你送 X7

虽说有极致的 Xplay5 用来打品牌,但真正跑起量来,Vivo 实际上靠得还是以明星代言、外型、自拍等特性为卖点的中端产品线。这不,他们刚刚又在北京发布了全新的 X7 系列,这次找来了大势韩星宋仲基,美其名曰「有了你就有了…

Gradle配置

配置远程仓库 在gradle目录下的init.d目录中创建名为init.gradle文件,内容如下: allprojects{repositories {def REPOSITORY_URL http://localhost:8081/nexus/content/groups/public/all { ArtifactRepository repo ->if(repo instanceof MavenArti…

UML类图实例

首先是复习一下UML中九种图的理解:http://xhf123456789plain.blog.163.com/blog/static/172880482201192222144421/ 画用例图:http://xhf123456789plain.blog.163.com/blog/static/172880482201192221826110/ 下面是类图的实例(好像大话设计中…

836c语言程序设计,2017年辽宁师范大学计算机应用研究所836C语言程序设计考研强化模拟题...

一、选择题1. 以下叙述中正确的是( )。A. 在scanf 函数的格式串中,必须有与输入项一一对应的格式转换说明符B. 只能在printf 函数中指定输入数据的宽度,而不能在scanf 函数中指定输入数据占的宽度C.scanf 函数中的字符串是提示程序员的&#…

days to_days_Java2Days 2012:Java EE

days to_daysJava2Days会议是东欧的主要活动,目的是介绍Java开发的最新趋势。 今年,该活动于10月25日至26日在保加利亚的索非亚举行。 我在那里,并有机会与一些来自SAP的同事一起品尝了一些最新的Java,云和移动内容,这…

c语言静态成员变量重名会怎么样,C++中静态成员函数与静态成员变量(static )...

C中静态成员函数与静态成员变量(static )这篇介绍了静态成员函数与静态成员变量,是我的读书笔记,我希望它够简短但又比较全面,起到复习的作用。如果有一些C知识记不清楚了,它可以帮你很快回忆起来。复习C语言的static关键字(1)加在…

JVM简单学习

jvm与字节码 jvm只需关注字节码文件 jvm由哪些部分构成 1.类加载子系统,将磁盘中的字节码文件加载到方法区的内存空间中 类加载器分两种:引导类加载器是jvm底层中用C和C语言写的 各个默认的类加载器的不同区别在于 各自默认负责要加载的类的目录不一…

谈一谈自己对依赖、关联、聚合和组合之间区别的理解

在学习面向对象设计对象关系时,依赖、关联、聚合和组合这四种关系之间区别比较容易混淆。特别是后三种,仅仅是在语义上有所区别,所谓语义就是指上下文环境、特定情景等。他们在编程语言中的体现却是基本相同的,但是基本相同并不等…

Java Bullshifier –生成大量随机代码库

生成大量随机Java应用程序的命令行工具 您一直在等待的命令行工具。 或不。 毕竟,这是很深奥的。 无论哪种方式,它对某些人都非常有用,而对其他人来说却是一个有趣的实用程序。 Bullshifier是由David Levanon和Hodaya Gamliel开发的内部Over…

二级c语言光盘,二级c语言(光盘).doc

1程序设计题: 请编写一个函数 unsigned fun (unsigned w ) w是一个大于10的无符号整数。例如:W值为5923,则函数返回923;W值为923,则函数返回23。if ( w >10000 ) w % 10000 ; 程序修改题: m i; 和 if( a[k]>a[m]…

设计模式六大原则(3):依赖倒置原则

定义: 高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。 问题由来:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下…

Jirasearch 2.0狗粮:使用Lucene查找我们的Jira问题

几年前,我首先构建并发布了Jirasearch ,它是用于薄型包装Lucene服务器的有趣的狗粮测试用例,以针对我们的Jira问题公开强大的搜索UI。 这很好地展示了Lucene的许多重要功能: 使用块联接查询来建模父文档(原始的Jira问…

Highcharts教程--把js代码从html中抽离出来,放到单独的一个js文件中。由html页面调用...

1.html页面写法 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>第一个 Highcharts 图表</title><!-- 引入 jquery.js --><script src"static/jquery-3.3.1.min.js"><…

数据结构c语言版第16页,数据结构c语言版

数据结构c语言版[编辑]概述《数据结构C语言版》本书的前半部分从抽象数据类型的角度讨论各种基本类型的数据结构及其应用;后半部分主要讨论查找和排序的各种实现方法及综合分析比较出版信息作/译者&#xff1a;严蔚敏&#xff0c;吴伟民 出版社&#xff1a;清华大学出版社出版日…

C语言申请内存时堆栈大小限制

一直都有一个疑问&#xff0c;一个进程可以使用多大的内存空间&#xff0c;swap交换空间以及物理内存的大小&#xff0c;ulimit的stack size对进程的内存使用有怎样的限制&#xff1f;今天特亲自动手实验了一次&#xff0c;总结如下&#xff1a; 开辟一片内存空间有2种方式&…

微服务之数据同步Porter

Porter是一款数据同步中间件&#xff0c;主要用于解决同构/异构数据库之间的表级别数据同步问题。 背景 在微服务架构模式下深刻的影响了应用和数据库之间的关系&#xff0c;不像传统多个服务共享一个数据库&#xff0c;微服务架构下每个服务都要有自己的数据库。如果你想获得微…