这是个有意思的问题, 网上扯淡的比较多, 有人争论, 复制更快, 有的人争论,剪切更快,有个人说, 一样快。
我做了一个小实验, 在D盘内进行操作, 剪切比复制快, 文件越大, 效果越明显。 在D盘和E盘之间, 复制和剪切的速度貌似差不多, 但从原理上来讲, 复制应该更快。下面引用网上的一句话,我个人觉得很有道理:
在同一个分区下的操作,剪切更快。因为在同一分区下,剪切是改写数据的逻辑地址,而复制相当于重新生成数据,所以剪切要快;不同分区之间的操作,复制更快。当然这个差距你可能感觉不到,都是向新的地址中生成新的数据,但是剪切多了一步要把原来的数据删掉,所以复制更快。
在同一个分区下的操作,剪切更快。因为在同一分区下,剪切是改写数据的逻辑地址,而复制相当于重新生成数据,所以剪切要快;不同分区之间的操作,复制更快。当然这个差距你可能感觉不到,都是向新的地址中生成新的数据,但是剪切多了一步要把原来的数据删掉,所以复制更快。
代码就是我的语言, 下面,我来模拟同一分区下的复制和剪切:
#include <iostream>
using namespace std;
typedef struct data
{
int a;
bool b;
char c;
short d;
}Data;
int main()
{
Data x;
x.a = 1;
x.b = false;
x.c = 'w';
x.d = 2;
Data y = x; // 复制, 费时费力
Data *p = &x; // 剪切,轻松搞定
return 0;
}
再来模拟不同分区下的复制和剪切:
#include <iostream>
using namespace std;
typedef struct data
{
int a;
bool b;
char c;
short d;
}Data;
int main()
{
Data x;
x.a = 1;
x.b = false;
x.c = 'w';
x.d = 2;
// 复制
Data y = x;
// 剪切(相对费时)
Data z = x;
x.a = 0;
x.b = false;
x.c = '\0';
x.d = 0;
return 0;
}
闲扯完毕。