C# unsafe 快速复制数组

news/2024/10/11 23:57:28
     /// <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);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/70455.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

11.Java集合框架_Set接口

Set接口和常用方法 基本介绍无序(添加和取出的顺序不一致),没有索引。 不允许重复元素,所以最多包含一个null。 JDK API中Set接口的实现类有HashSet、LinkedHashSet和TreeSet。set接口常用方法 和List接口一样,set接口也是Collection的子接口,因此,常用方法和Collection…

罗技鼠标永久宏定义设置

背景 写程序用到最多的组合按键就是ctrl+c, ctrl+v, 而这些能不能在鼠标上实现,这样就能解放左手了(机智如我) 硬件 需要一款支持宏定义的鼠标,而罗技系列正好拥有(未收广告费),目前尝试在g102, g304, gpwer代上都可运行 思路 使用ghub软件定义宏后加载到鼠标的板载内存上遇…

SIGIR2024| RAREMed: 不放弃任何一个患者——提高对罕见病患者的药物推荐准确性

在本文中,我们针对药物推荐模型对罕见病患者推荐精度低的问题,提出了一种新的基于预训练-微调的药物推荐模型框架**RAREMed**,并提出了两个针对性的预训练任务,来提高模型对患者病情,尤其是罕见病患者病情的表示学习能力,帮助药物推荐模型提高对罕见病患者的推荐准确度,…

电阻功率

电阻功率 电阻的额定功率主要由封装决定,但也不是绝对的,还跟电阻的工艺(薄膜还是厚膜),品牌,阻值大小等有一定关系。 如果上网查功率与封装的关系的话,会有一些网友给出功率与封装表格,那并不一定总是正确的,使用时需要谨慎。 下面列一些厂家的电阻与额定功率的关系表…

OP设置SSH-绑定GitHub账户

OP设置SSH-绑定GitHub账户 https://github.com/dragonpilot-community/dragonpilot_wiki/blob/master/cn/how_to_setup_github_ssh.md 从0.83开始,安装好OP后会删掉原来通用的ssh密钥信息,无法进行ssh/sftp登录。若需要登录,需要在OP里面绑定GitHub账户里头的ssh公钥。 一、…

DLJD_Docker学习_01

第1章 Docker 概述 1.1 课程引入 开发/运维互掐 1.1.1 开发与测试和运维间的矛盾,主要是由于环境的不同而引发的。如果能将开发人员使用的环境交给测试与运维使用,这些问题就都能解决。 1.1.2 DevOps DevOps 是一种思想,是一种管理模式,是一种执行规范与标准。它主要是用于…