计算机对加减乘除的计算时间的对比
2017-12-20 13:10
357 查看
Intel Pentium CPU计算加减乘除的指令周期
【加法】:
指令 指令周期
adc 寄存器, 立即数 1
adc 寄存器, 寄存器 1
adc 寄存器, 内存 2
adc 内存, 立即数 3
adc 内存, 寄存器 3
add 寄存器, 立即数 1
add 寄存器, 寄存器 1
add 寄存器, 内存 2
add 内存, 立即数 3
add 内存, 寄存器 3
inc 寄存器 1
inc 内存 3
【减法】:
dec 寄存器 1
dec 内存 3
sub 寄存器, 立即数 1
sub 寄存器, 寄存器 1
sub 寄存器, 内存 2
sub 内存, 立即数 3
sub 内存, 寄存器 3
sbb 寄存器, 立即数 1
sbb 寄存器, 寄存器 1
sbb 寄存器, 内存 2
sbb 内存, 立即数 3
sbb 内存, 寄存器 3
【乘法】:
imul 寄存器 11
imul 内存 11
imul 寄存器, 寄存器, 立即数 10
imul 寄存器, 立即数 10
imul 寄存器, 内存, 立即数 10
imul 寄存器, 寄存器 10
imul 寄存器, 内存 10
mul 8位寄存器 11
mul 16位寄存器 11
mul 32位寄存器 10
mul 8位内存 11
mul 16位内存 11
mul 32位内存 10
【除法】:
div 8位寄存器 17
div 16位寄存器 25
div 32位寄存器 41
div 8位内存 17
div 16位内存 25
div 32位内存 41
idiv 8位寄存器 22
idiv 16位寄存器 30
idiv 32位寄存器 46
idiv 8位内存 30
idiv 16位内存 30
idiv 32位内存 46
由此可见,CPU计算加减法的速度跟位运算(与、或、非、异或)相当,乘法的速度比加减法慢近10倍,除法的速度比加减法慢(近20倍——8位,近30倍——16位,40倍以上——32位)。算加减法,读取内存数据的比不读内存数据的慢,写内存的比读内存的慢。
【加法】:
指令 指令周期
adc 寄存器, 立即数 1
adc 寄存器, 寄存器 1
adc 寄存器, 内存 2
adc 内存, 立即数 3
adc 内存, 寄存器 3
add 寄存器, 立即数 1
add 寄存器, 寄存器 1
add 寄存器, 内存 2
add 内存, 立即数 3
add 内存, 寄存器 3
inc 寄存器 1
inc 内存 3
【减法】:
dec 寄存器 1
dec 内存 3
sub 寄存器, 立即数 1
sub 寄存器, 寄存器 1
sub 寄存器, 内存 2
sub 内存, 立即数 3
sub 内存, 寄存器 3
sbb 寄存器, 立即数 1
sbb 寄存器, 寄存器 1
sbb 寄存器, 内存 2
sbb 内存, 立即数 3
sbb 内存, 寄存器 3
【乘法】:
imul 寄存器 11
imul 内存 11
imul 寄存器, 寄存器, 立即数 10
imul 寄存器, 立即数 10
imul 寄存器, 内存, 立即数 10
imul 寄存器, 寄存器 10
imul 寄存器, 内存 10
mul 8位寄存器 11
mul 16位寄存器 11
mul 32位寄存器 10
mul 8位内存 11
mul 16位内存 11
mul 32位内存 10
【除法】:
div 8位寄存器 17
div 16位寄存器 25
div 32位寄存器 41
div 8位内存 17
div 16位内存 25
div 32位内存 41
idiv 8位寄存器 22
idiv 16位寄存器 30
idiv 32位寄存器 46
idiv 8位内存 30
idiv 16位内存 30
idiv 32位内存 46
由此可见,CPU计算加减法的速度跟位运算(与、或、非、异或)相当,乘法的速度比加减法慢近10倍,除法的速度比加减法慢(近20倍——8位,近30倍——16位,40倍以上——32位)。算加减法,读取内存数据的比不读内存数据的慢,写内存的比读内存的慢。
相关文章推荐
- 计算机中加减乘除运算时间
- java计算当前时间和对比的过期时间…
- 测试cuda的unified memory和cudaMemcpy的加减乘除及空间申请时间对比
- 巩固基础篇:数独彩色版(计算时间) 经典回溯法(可与八皇后问题对比)
- 计算时间戳和现在时间对比返回数字
- 计算日期时间 自动加1天 PHP计算闰年 java与PHP时间戳对比区别
- 计算机时间、unix时间、linux时间、java时间为何以1970年1月1日为原点?从1970年1月1日开始计算?
- 计算机计算的时间精度
- 计算机时间、unix时间、linux时间、java时间为何以1970年1月1日为原点?从1970年1月1日开始计算?
- 时间对比、流水号计算、100%统计
- 计算机的I/O时间是如何计算的
- 计算机时间、unix时间、linux时间、java时间为何以1970年1月1日为原点?从1970年1月1日开始计算?
- 云计算的计算,网络及数据库服务与普通计算机的对比
- 计算机时间、unix时间、linux时间、java时间为何以1970年1月1日为原点?从1970年1月1日开始计算?
- 计算机时间、unix时间、linux时间、java时间为何以1970年1月1日为原点?从1970年1月1日开始计算?
- 计算机时间、unix时间、linux时间、java时间为何以1970年1月1日为原点?从1970年1月1日开始计算?
- 为什么计算机很多语言里的时间都是从1970年1月1日午夜开始计算?
- 计算机系统的时间的计算机制
- C# 计算时间差/运行耗时计算/时间计数器(非DateTime相减方法,Stopwatch类)及 与DateTime的对比测试
- 计算一个程序的执行时间和定时器