Net Core教程

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秒

 

这篇关于C#数组复制效率,Take与Copy对比的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!