/// <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#陣列
- JS 複製陣列和物件JS陣列物件
- 陣列(引用型別)複製問題陣列型別
- JS中的陣列複製問題JS陣列
- NumPy 陣列複製與檢視詳解陣列
- 將一個陣列複製到另一個陣列上陣列
- c#刪除有序陣列中的重複項C#陣列
- C#快速入門教程(19)—— 索引器與陣列C#索引陣列
- java語言複製陣列的四種方法Java陣列
- c# 陣列排序C#陣列排序
- C# 一維陣列如何快速實現陣列元素的資料型別的轉換?C#陣列資料型別
- C#中的物件深複製和淺複製C#物件
- 字尾陣列複習陣列
- C#學習 陣列(22)C#陣列
- 瞭解下C# 陣列(Array)C#陣列
- PHP 陣列排序(複雜字串)PHP陣列排序字串
- iOS 模型陣列去重複iOS模型陣列
- javascript 將一個陣列中的元素的值複製到另一個已有資料的陣列中JavaScript陣列
- C# 高效能物件複製C#物件
- 樹狀陣列快速入門陣列
- Go 快速入門指南 - 陣列Go陣列
- Leetcode[陣列] 26. 刪除排序陣列中的重複項LeetCode陣列排序
- JavaScript 陣列隨機不重複元素JavaScript陣列隨機
- JavaScript陣列刪除重複元素JavaScript陣列
- JavaScript 刪除陣列重複元素JavaScript陣列
- es6陣列去重複陣列
- 陣列中重複的數字陣列
- C#陣列與集合的區別C#陣列
- ArrayList動態陣列物件 c# 1231陣列物件C#
- 快速取出陣列中指定鍵值陣列
- js陣列物件複製拷貝不改變原來的值,深拷貝JS陣列物件
- JavaScript陣列刪除重複內容JavaScript陣列
- 複習一:陣列(4)-插入排序陣列排序
- 陣列去除重複的幾個方法陣列
- PHP陣列去除空白或重複元素PHP陣列
- 【C#】山脈陣列的峰頂索引C#陣列索引
- 陣列模擬佇列 以及佇列的複用(環形佇列)陣列佇列
- Go語言之陣列快速入門篇Go陣列