[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] [已结束]电脑处理1*1和1234567*134567一样快吗?

结束时间: 2011-4-30 17:27 ,裁判: qzwqzw

评判时间: 2011-4-30 17:27

裁判观点: 对于非计算机原理专业的论坛
能讨论到如此程度
我是十分意外并且高兴的
主要是因为几位重量级人物的参与
包括
持支持意见的理论派wc726842270
持中立意见的技术流neorobin
持反对意见的实证家zm900612
最佳辩手我选择非常勤勉的zm
不论观点是否正确
负责任的态度和积极参与的热情值得肯定

至于最后的结论
我想是不用总结的
任何论点都会受到多方面因素的影响
包括它所处的环境和所讨论的深度
不过就此论点来说
目前为止反对派占明显的大多数
而且正方的意见到目前为止都不够有力
这说明反对和中立的意见是当前的主流意识

最佳辩手: zm900612

本帖最后由 qzwqzw 于 2011-4-30 17:25 编辑

辩论已结束
对于非计算机原理专业的论坛
能讨论到如此程度
我是十分意外并且高兴的
主要是因为几位重量级人物的参与
包括
持支持意见的理论派wc726842270
持中立意见的技术流neorobin
持反对意见的实证家zm900612

至于最后的结论
我想是不用总结的
任何论点都会受到多方面因素的影响
包括它所处的环境和所讨论的深度
不过就此论点来说
目前为止反对派占明显的大多数
而且正方的意见到目前为止都不够有力
这说明反对和中立的意见是当前的主流意识
——————————————————————
首先声明
这并非批处理编程直接相关的问题
而是因为一个批处理而衍生的问题
版主大大不要见怪

理所当然
对于人脑来说
1234567*1234567明显比1*1消耗更多的能量和时间
那么对于电脑来说
也是如此吗?

请大家畅所欲言——
注意:
据我的测试
一旦选择“支持正方”或“支持反方”后
即选定了辩论立场且无法中途改变
所以请谨慎选择支持立场!


另外,
如果觉得某个回复很棒很合自己心意
请不要忘记投上自己赞成的一票

[ 本帖最后由 qzwqzw 于 2011-3-15 11:01 编辑 ]
正方

嗯,几乎是一样快

反方

不,差别相当明显

1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2
天的白色影子

按立场筛选:


我在想,如果乘法是通过加法实现的,那1*10000000和100000000*1的效率是否有别呢?对人来说,这是荒谬的,但是假如电脑是很死板的把X加N次,那二者效率很可能有所不同,当然了,估计就算真的是把某个数加N次,也很可能是先判断二者大小
手上尚无测试结果,暂且中立

TOP

这个要查一查《计算机组成原理》、《汇编语言》等教材了吧
看看它是怎样把乘法转换成加法、实际计算的时候在几个寄存器里面是怎么倒腾的
^_^
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

以楼主给出的这两对数字,以32位系统来说,速度是一样的
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

1. 1*1 这在任何一台电脑上都不会超出 单字节(8 位) 整型数运算范围, 也不会超出最小字长 8 位
所需要的时间无疑是 乘法运算里 最少的.

2.
两个大数以及它们的积的十六进制表示如下:

1234567
12D687

134567
20DA7

166131977489
26AE3CCD11

两个大乘数都在 4 字节以内, 而积却超出了 4 字节(32 位).
现在我们使用的多数 PC 机都是 32 位机, 直接作为整型数计算会产生溢出, 这种情况下会是很不一样的.

用 32 位机的 RISC 指令集肯定是不能直接计算得到结果的, 得有程序支持才行.

而在 64 位(8字节)及 64 位以上的机器上, 乘数和积的存储长度都没有超出,
运算器的设计就可能让 1*1和1234567*134567 都是花费一个同样的最少的计算时间, 换而言之,
现在的 CPU 核心电路设计和 RISC 指令可以(或将会)实现:
当 操作数 和 理论计算结果 在同一个 整型数据类型 的计算范围内时, 任何小的数的运算和任何大的数的运算
都将花费同样多的时钟周期, 也就是费时一样长.

最终观点: 1*1 和 1234567*134567 在 32 位及以下的机器上会有很大的耗时差异, 而在 64 位及以上
的机器上已经实现(或将会实现)耗时完全相同.

TOP

各位想要实际测试的朋友: 至少 要用同样的 汇编代码 分别在一个 <=32位的机器 和 一个 >=64位的机器上分别做测试

TOP

以下引用 wikipedia 对 RISC 和 CISC 的相关阐述 进一步阐明我的观点: 1*1和1234567*134567, 因机器字长及CPU核心电路设计 以及 核心指令设计方案而不同, 可能耗时差异很大, 也可能都只需要耗时 1 个时钟周期.
http://zh.wikipedia.org/wiki/%E7%B2%BE%E7%AE%80%E6%8C%87%E4%BB%A4%E9%9B%86

...
另一方面,目前最常见的复杂指令集x86 CPU,虽然指令集是CISC的,但因对常用的简单指令会以硬件线路控制尽全力加速,不常用的复杂指令则交由微码循序器“慢慢解码、慢慢跑”,因而有“RISCy x86”之称。
...
复杂指令集(CISC)
例如:Intel的奔腾系列中央处理器属于复杂指令集(x86)结构,而IBM的PowerPC 970(用于苹果机Power Mac G5)中央处理器属于精简指令集(POWER)结构。但是自从 Intel Pentium Pro(P6)之后,x86复杂指令集的CPU也开始采用内核精简指令集,而在外围布置从复杂指令集到精简指令集的译码电路动态译码方式,籍此提高CPU的性能,使复杂指令集CPU也有可能在1个时钟周期内运行一条甚至多条指令
1

评分人数

TOP

返回列表