C#数组复制性能测试

 1 using System;
 2 using System.Collections;
 3 using System.Collections.Generic;
 4 using System.Data;
 5 using System.Diagnostics;
 6 using System.IO;
 7 using System.Linq;
 8 using System.Runtime.InteropServices;
 9 using System.Threading;
10 using EmisData;
11 using Newtonsoft.Json;
12
13 namespace CLibrary.ConsoleApp
14 {
15     class Program
16     {
17         static void Main(string[] args)
18         {
19             int len = 50000000;
20             int[] newArray = new int[len];
21             Stopwatch sw = new Stopwatch();
22             int[] allArray = new int[len];
23             for (int i = 0; i < len; i++)
24             {
25                 allArray[i] = i;
26             }
27
28             sw.Start();
29             Thread.Sleep(1000);
30             Array.Copy(allArray, newArray, len);
31             sw.Stop();
32             Console.WriteLine("Array.Copy 执行时间(毫秒)"+ sw.ElapsedMilliseconds);
33
34             Array.Clear(newArray, 0, len);
35             sw.Restart();
36             Thread.Sleep(1000);
37             newArray = (int[])allArray.Clone();
38             sw.Stop();
39             Console.WriteLine("Array.Clone 执行时间(毫秒)" + sw.ElapsedMilliseconds);
40
41             Array.Clear(newArray, 0, len);
42             sw.Restart();
43             Thread.Sleep(1000);
44             Buffer.BlockCopy(allArray, 0, newArray, 0, len);
45             sw.Stop();
46             Console.WriteLine("Buffer.BlockCopy 执行时间(毫秒)" + sw.ElapsedMilliseconds);
47
48             Console.ReadKey();
49         }
50
51
52
53     }
54
55 }

测试结果:

可见:Buffer.BlockCopy 表现最佳

时间: 2024-07-31 23:58:34

C#数组复制性能测试的相关文章

利用concat进行数组复制

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>数组复制</title> </head> <body> <script type="text/javascript"> var arr1 = [1,3,5,6,7]; var arr2 = arr1.c

java数组复制的几种常见用法

1.1数组复制的几种常见用法 1.1.1System.arraycopy的用法 int[] src = {1,3,5,7,9,11,13,15,17}; int[] dest = {2,4,6,8,10,12,14,16,18,20}; //从src中的第一个元素起复制三个元素,即1,3,5复盖到dest第2个元素开始的三个元素 System.arraycopy(src, 0, dest, 1, 3); System.out.println(Arrays.toString(dest)); 结果为

C语言 二维数组复制、清零及打印显示

#include <stdlib.h> #include <stdio.h> #include <string.h> //二维整型数组打印显示 void printarr2d(int (*a)[3],int row,int col) { int i,j; for(i=0; i<row; i++) { for(j=0; j<col; j++) { printf("%d ", a[i][j]); } printf("\n"

js 数组复制问题

师兄面试回来问个问题,js中数组怎么复制,工作中没遇到,面试也涨见识 了,他给我说了下,太晚没留心,打早起来研究下,写个dom,来看下 代码如下 <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>数组复制</title> </head> <script> var arr1=[1,2,

关于数组复制的问题

引用自:http://blog.sina.com.cn/s/blog_51baa1570100io8r.html 一. 错误实现 var array1 = new Array("1","2","3"); var array2; array2 = array1; array1.length = 0; alert(array2); //返回为空 这种做法是错的,因为javascript分原始类型与引用类型(与java.c#类似).Array是引用类

数组 复制 元素个数 连接 查找 查询位置

#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { //数组 //快速创建数组 NSArray *[email protected][@"MON",@"TUE",@"WED",@"THU",@"FRI",@"SAT",@"SUN&

[Java] arraycopy 数组复制(转)

public class ArraycopyTest {     public static void main(String[] args)     {         //静态初始化两个长度不同的数组         int src[] = {1,2,3,4,5,6};         int dest[] = {10,9,8,7,6,5,4,3,2,1};                 //将数组src的4个元素copy到数组dest中         System.arraycopy(

System.arraycopy 数组复制

函数原型: public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) ; src:源数组: srcPos:源数组要复制的起始位置: dest:目的数组: destPos:目的数组放置的起始位置: length:复制的长度. 例子: System.arraycopy(from, 0, keyString, 0, from.length); from 和 keyString都是

数组 复制 拷贝 相等判断

js 数组的拷贝(不影响原数组),数组相等判断 数组拷贝 数组属于引用类型:简单的赋值只是添加了一个指向数组的指针:ex: var a = [1,2,3]; var b = a; b.push(2); console.log(a)//[1,2,3,2] 对新数组 b 的操作同样会改变原始数组 a 那么如何实现独立的拷贝?介绍下面两种方法:两种方法性能上相差不大,不同浏览器内核上各有千秋: //方法1 var a = [1,2,3]; var b = a.slice(); a.reverse; c