/// <summary>
/// 複製記憶體
/// </summary>
/// <param name="dest">目標指標位置</param>
/// <param name="src">源指標位置</param>
/// <param name="count">位元組長度</param>
/// <returns></returns>
[DllImport("msvcrt.dll")]
public static extern IntPtr memcpy(IntPtr dest, IntPtr src, int count);
unsafe static int[] MyCopy(int[] oriInts)
{
int[] result = new int[oriInts.Length];
int lenth= oriInts.Length;
fixed (int* pOri= oriInts) //fixed語句獲取指向任意值型別、任意值型別陣列或字串的指標
{
fixed (int* pResult = result)
{
memcpy(new IntPtr(pResult), new IntPtr(pOri), sizeof(int) * lenth);//注意,第一個引數和第二個引數的順序
}
}
return result;
}
static int[] MyCopyB(int[] oriInts)
{
int[] result = new int[oriInts.Length];
for(int i=0;i<oriInts.Length;i++)
{
result[i]= oriInts[i];
}
return result;
}
static void Main(string[] args)
{
var a = sizeof(int);
int[] ori = new int[100000000];
for(int i = 0; i < ori.Length; i++)
{
ori[i] = i;
}
Stopwatch sw = new Stopwatch();
sw.Start();
int[] copyA= MyCopy(ori);
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds);
sw.Restart();
int[] copyB = MyCopyB(ori);
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds);
}
C# unsafe 快速複製陣列
相關文章
- C# 陣列的複製C#陣列
- C#中複製陣列C#陣列
- C#高效能陣列複製實驗C#陣列
- javascript 陣列的深度複製JavaScript陣列
- JS 複製陣列和物件JS陣列物件
- js如何複製指定的陣列JS陣列
- javascript如何複製一個陣列JavaScript陣列
- [分享]javascript 陣列以及物件的深拷貝(複製陣列或複製物件)的方法JavaScript陣列物件
- JS中的陣列複製問題JS陣列
- 陣列(引用型別)複製問題陣列型別
- C# 移除陣列中重複資料C#陣列
- NumPy 陣列複製與檢視詳解陣列
- 將一個陣列複製到另一個陣列上陣列
- java語言複製陣列的四種方法Java陣列
- 基礎:如何有效的複製和合並陣列陣列
- c#刪除有序陣列中的重複項C#陣列
- c#淺複製與深複製C#
- C#快速入門教程(19)—— 索引器與陣列C#索引陣列
- java函式陣列引數的複製問題Java函式陣列
- C#陣列相乘C#陣列
- C#陣列教程C#陣列
- c# 陣列排序C#陣列排序
- C# 一維陣列如何快速實現陣列元素的資料型別的轉換?C#陣列資料型別
- javascript 陣列快速排序JavaScript陣列排序
- javascript實現複製一個陣列程式碼例項JavaScript陣列
- Vue實現對陣列、物件的深拷貝、複製Vue陣列物件
- C#中的物件深複製和淺複製C#物件
- C#陣列引數C#陣列
- c# 陣列學習C#陣列
- 字尾陣列複習陣列
- C# 批量複製檔案C#
- android典型程式碼系列(十九)------將一個陣列複製成為另外一個陣列的方法Android陣列
- 瞭解下C# 陣列(Array)C#陣列
- C#初始化陣列C#陣列
- C#陣列教程之2C#陣列
- C#陣列教程之3C#陣列
- C#學習 陣列(22)C#陣列
- 一種快速可預製的隨機陣列產生方法(轉)隨機陣列