拷贝与剪切的性能

本文通过实验对比了在不同场景下复制(copy)与剪切(move)文件的速度差异,并分析了背后的技术原因,指出在同一磁盘内剪切文件比复制更快。
今天用程序复制图片,速度好慢

A,同盘下剪切比复制快很多倍,原因是更改了文件的路径,也就是磁盘文件的分区表,而没有改动文件
B,从移动磁盘复制或剪切到电脑,速度取决于移动磁盘,从实际看,是复制更快点
C,数据从电脑复制或剪切到移动磁盘,速度都一样,对于移动磁盘都是写入,而且通常速度都达到饱和(USB2.0下)
D,数据从电脑的D盘复制或剪切到E盘或者其他盘上,是复制更快点,减少磁头工作量就是增快速度!

核心就是谁的 磁头工作,以及磁头的工作量

Copy 与 Move 同盘符下 测试
class Program
    {
        static void Main(string[] args)
        {
            CopyToTest();
            MoveToTest();
            Console.ReadLine();
        }

        static string[] GetImgFiles() 
        {
            string path = @"";
            return Directory.GetFiles(path, "*.jpg", SearchOption.AllDirectories);
        }

        static string[] GetImgFiles1()
        {
            string path = @"D:\TIANDITU\DATA\POIDATA\大众点评网\川菜\bjc";
            return Directory.GetFiles(path, "*.jpg", SearchOption.AllDirectories);
        }

        static void MoveToTest()
        {
            string root = @"";
            DateTime dtStart = DateTime.Now;
            string[] arr = GetImgFiles1();
            int counter = 0;
            foreach (string item in arr)
            {
                string target = Path.Combine(root, counter.ToString() + ".jpg");
                File.Move(item, target);
                counter++;
            }
            DateTime dtEnd = DateTime.Now;
            TimeSpan ts = dtEnd - dtStart;
            Console.WriteLine("statistics for move");
            Console.WriteLine(ts.TotalSeconds);
            Console.WriteLine(ts.TotalMinutes);
        }


        static void CopyToTest() 
        {
            string root=@"D:\TIANDITU\DATA\POIDATA\大众点评网\川菜\bjc";
            DateTime dtStart = DateTime.Now;
            string[] arr = GetImgFiles();
            int counter = 0;
            foreach (string item in arr)
            {
                string target = Path.Combine(root, counter.ToString()+".jpg");
                File.Copy(item, target);
                counter++;
            }
            DateTime dtEnd = DateTime.Now;
            TimeSpan ts = dtEnd - dtStart;
            Console.WriteLine("statistics for copy");
            Console.WriteLine(ts.TotalSeconds);
            Console.WriteLine(ts.TotalMinutes);
        }
    }

 


测试结果
statistics for copy
113.78125
1.89635416666667
statistics for move
13.84375
0.230729166666667

Move 比 copy 快了 10倍左右


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值