对于开辟空间、比较、memcpy这三个哪个更快(一定条件上)
对于开辟空间、比较、memcpy这三个哪个更快(一定条件下)?我主要是针对数据结构里面的直接插入排序来发问的,
对于开辟空间、比较、memcpy这三个哪个更快(一定条件下)?
我主要是针对数据结构里面的直接插入排序来发问的,因为里面带排序的数组tArray[0]作为哨兵并不参与实际比较,而我的数据实际上tArray[0]也是带排序的,所以我准备将数据用memcpy复制到另一个数组(从下标1开始),然后排序后再复制回来。问题是:其实那个哨兵是可以不用的,我只需在最前面来个if判断带插入数据是否与前面有序序列比较完全,是的话就break,但这样就会多几次比较耗费时间,所以说我想问相对而言memcpy+开辟空间和if判断哪个花费时间要少?
[解决办法]
当然是if了,指令远少于memcpy。
[解决办法]
cmp命令是原子级别的 每秒比较百万次无压力
[解决办法]
逐个复制快,memcpy只是写着方便
[解决办法]
复制应该是按CPU的位数复制 不会优化的话肯定memcpy快
[解决办法]
if(a!=b)
对应汇编
cmp a,b之类的一条指令 可能会加上寄存器传值 跳转之类的
[解决办法]from my understanding, 肯定会的!
汇编语句
cmp r0, r1
比较r0与r1的值,将结果写入状态寄存器
[解决办法]这贴回复太多胡扯了,char类型memcpy会比逐个拷贝慢?明显是一样的
另外用if显然要慢
a=b;
显然比
if(a!=b)
a=b;
要快
[解决办法]自己测测吧。
[解决办法]cpu对于单纯的数据拷贝I/O和比较,只要中途不涉及浮点运算的快的一逼!,你可以分别写2个代码,编好了 time 一下就知道