编程语言
首页 > 编程语言> > C#数组复制效率,Take与Copy对比

C#数组复制效率,Take与Copy对比

作者:互联网

项目中需要频繁处理byte[],之前复制byte[]一直用的是array.skip(x).take(x).ToArray(),因为它写起来方便。

今天突然想起复制数组还有个方法Array.Copy(),不知道哪个方法更快一些,就写了代码进行测试。

测试代码:

MemoryStream stream = FileIO.GetFile(@"C:\Users\Admin\Desktop\000.psd");
            byte[] byts = stream.ToArray();
            stream.Close();
            int i = 0;
            int n = 6000;
            Console.Out.WriteLine("开始测试");
            Stopwatch sw = new Stopwatch();
            sw.Start();
            while (i < byts.Length)
            {
                try
                {
                    var t = byts.Skip(i).Take(n).ToArray();
                    i += n;
                }catch(ArgumentException e)
                {
                    i += n;
                }
            }
            sw.Stop();
            Console.Out.WriteLine("\tTake总用时:{0}秒", sw.ElapsedMilliseconds * 0.001);
            i = 0;
            sw.Restart();
            while(i < byts.Length)
            {
                try
                {
                    byte[] t = new byte[n];
                    Array.Copy(byts, i, t, 0, n);
                    i += n;
                }catch(ArgumentException e)
                {
                    i += n;
                }
            }
            sw.Stop();
            Console.Out.WriteLine("\tCopy总用时:{0}秒", sw.ElapsedMilliseconds * 0.001);

 

测试结果:

        Take总用时:27.344秒
        Copy总用时:0.035秒

 

标签:ToArray,总用,C#,sw,byts,Take,byte,Copy
来源: https://www.cnblogs.com/woog/p/16519309.html