怎样写出一个更快的 memset/memcpy

 我来答
就烦条0o
2016-01-26 · 知道合伙人软件行家
就烦条0o
知道合伙人软件行家
采纳数:33315 获赞数:46492
从事多年系统运维,喜欢编写各种小程序和脚本。

向TA提问 私信TA
展开全部
实现能在不同拷贝长度,对齐和不对齐,平均比 memcpy 快40%(gcc4.9, vc 2012),主要是以下几个优化点:
策略区别:64字节以内用小内存方案,64K以内用中尺寸方案,大于64K用大内存拷贝方案。

查表跳转:拷贝不同小尺寸内存,直接跳转到相应地址解除循环。
目标对齐:64字节以上拷贝的先用跳转表方法拷贝几个字节让目标地址对齐,好做后面的事情。

矢量拷贝:并行一次性读入N个矢量到 sse2 寄存器,再并行写出。

缓存预取:使用 prefetchnta ,提前预取数据,等到真的要用时数据已经到位。

内存直写:使用 movntdq 来直写内存,避免缓存污染。
富港检测东莞有限公司
2024-12-25 广告
ISTA3L是一个基于研究、数据驱动的测试协议,它模拟了由零售公司完成的产品订单被直接运送给消费者时所经历的危险,它允许用户评估包装产品的能力,以承受运输和处理包装产品时所经历的供应链危险,从接收到任何电子商务零售商履行操作,直到最终消费者... 点击进入详情页
本回答由富港检测东莞有限公司提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式