腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
精选内容/技术社群/优惠产品,
尽在小程序
立即前往
文章
问答
(9999+)
视频
沙龙
1
回答
MSVC
:
无效
的
memcpy
优化
?
、
、
、
、
考虑以下代码: void MemMove8(void* dst, void* src) char tmp[8];
memcpy
(dst, tmp, 8);; _src$ = edx mov eax, DWORD PTR [生成
的
代码对我来说似乎是错误
的
;或者这是一个有效
的
转换,我
浏览 18
提问于2020-08-16
得票数 15
回答已采纳
1
回答
假设
memcpy
的
固定大小被
优化
了,安全吗?
、
利用GCC,你可以做这样
的
事情。(*a));}void foo(MyStruct a[3], constMyStruct *b) a[0] = *b; a[2] = *b; 我
的
问题是,假设对
memcpy
的
函数调用总是被
优化
,是否合理?我之所以这样问,是因为我考虑在宏中使用
浏览 0
提问于2015-03-22
得票数 2
3
回答
在Windows上
优化
memcpy
(
MSVC
++)
、
、
、
从一个数组到另一个数组
的
整数。我发现以下3项
的
性能是不同
的
,尽管它们完成了相同
的
任务:
memcpy
((int*)(arr), (int*)(temp), size);计时时间分别为我知
浏览 0
提问于2020-08-24
得票数 0
回答已采纳
1
回答
C语言中
的
一个奇怪
的
字符串复制函数
、
、
、
当我阅读nginx代码时,我看到了这个函数: return ngx_cpymem(dst, src, len);} 这是一个简单
的
字符串复制函数但是如果字符串
的
长度是>= 17,为什么要测试字符串
的
长度并切换到
memcpy
呢?
浏览 0
提问于2011-04-13
得票数 9
回答已采纳
3
回答
如果未明显使用结构成员,编译器是否允许将赋值移除给struct成员?
、
考虑以下代码:{ int b;}; { x.a = 1; x.c = 3;当然,将结构实例定义为所包含
的
赋值中
的
易失性引线。 g
浏览 7
提问于2013-01-25
得票数 6
2
回答
`std::vector<std::uint8_t>`
的
快速拷贝
、
、
、
、
我
的
分析结果显示,Microsoft Visual C++ (
msvc
100)实现在内部使用std::uninitialized_copy。这将逐个复制每个元素。在这种情况下,可以通过一次复制整个内存块来完成更
优化
的
复制(就像
memcpy
可能做
的
那样)。 换句话说,这可能是一个重要
的
优化
。有没有办法迫使向量使用这种
优化
的
方法?注意:我尝试过使用std::basic_string<std::uint8_t>
浏览 0
提问于2013-04-12
得票数 24
回答已采纳
2
回答
编译器
优化
:将变量从堆栈移动到寄存器
、
、
、
、
<cstdint>{ std::
memcpy
(&result, p, 5);} https://godbolt.org/z/vULPAZ clang在这里
优化
了寄存器
的
result,而gcc没有。我怀疑这可能是因为我接受了一个变量
的
地址,因为一个人不能
浏览 29
提问于2019-03-23
得票数 4
回答已采纳
1
回答
uninitialized_copy
memcpy
/memmove
优化
、
、
我最近开始检查
MSVC
实现中
的
STL。这里有一些很好
的
技巧,但是我不知道为什么会使用以下标准。如果满足某些条件,则std::uninitialized_copy
优化
为一个简单
的
memcpy
/memmove。据我理解,如果从源类型T中输入
的
目标类型为U,则输入范围可以是
memcpy
'd到未初始化
的
区域。 然而,
MSVC
实现在选择
memcpy
之前检查了很多事情,而不是元素
的<
浏览 14
提问于2017-11-24
得票数 4
回答已采纳
1
回答
如果未使用
的
函数参数是指向函数
的
指针,那么它
的
实际参数是否需要定义?
、
、
按照C++标准,以下是一个完整
的
程序吗?void foo(); int main() { bar(foo); } 当整个程序
优化
关闭时,
MSVC
14成功地构建了它,但如果打开链接时间代码生成,则会出现“未解决
的
外部符号
无效
__cdecl foo( void )”错误。
浏览 2
提问于2015-12-17
得票数 0
回答已采纳
3
回答
为什么16字节
的
memcpy
比1字节
的
memcpy
快一倍?
、
在查看
memcpy
时,我发现了一个奇怪
的
小字节大小
的
效果。特别是,我
的
系统使用
的
最快字节计数是16字节。大小越小,速度越慢。这是我从一个更大
的
测试程序中得到
的
结果
的
截图。#include <chrono> #include <iostrea
浏览 13
提问于2022-05-31
得票数 0
2
回答
为什么
MSVC
要
优化
这个内存调用?
、
char *s, *s1; getstr2(&s);
memcpy
buffer + *buffer + 1, s + 1, (*s) * sizeof(char));}_s$ = -4
浏览 1
提问于2019-03-28
得票数 15
回答已采纳
8
回答
优化
的
memcpy
、
、
在C++中有没有比
memcpy
()更快
的
替代品?
浏览 2
提问于2009-07-30
得票数 20
回答已采纳
1
回答
用C语言实现快速交织操作?
、
、
、
我需要将两个数组组合成一个四个数组
的
第三个数组。具体而言,对于输入数组 A0, A1, A2, A3, A4, A5, A6, A7 ...中提出
的
去交错问题相反 为了获得一些额外
的
乐趣,这两个缓冲区分别包含8位和16位宽
的
元素。我已经写了一些代码来做这件事,但是分析表明它花费了很多时间,所以我正在寻找加速它
的
方法。因为我
的
目标CPU (LEON)不提供它们,所以SIMD内部函数不是一个选项。我
的
CPU
的
字长是16位。我已经尝试了不同
的
浏览 28
提问于2019-09-20
得票数 5
1
回答
我怎样才能绕过GCC
优化
-错误小姐90271?
、
、
GCC在2019年5月之前发布
的
版本(以及以后发布
的
版本)未能
优化
这段代码:int replace_byte(int v1,char v2, size_t k)
memcpy
( (void*) (((char*)&v1)+k) , &v2 , sizeof(v2) );} 可以看到, (GodBolt):clang正确地
优化
了这个代码,GC
浏览 0
提问于2019-04-29
得票数 5
回答已采纳
2
回答
在32位中存储两个整数值,同时避免带有负数
的
UB
我可以使用较低和较高
的
位来完成这一任务,正如问题中所回答
的
那样。 int int2 = 2342;但我
的
价值也可能是负值,所以<< 16会导致行为吗?如果是的话,存储和检索这两个数字
的
解决方案是什么?这两个数字也可以安全地成为负数? 整个32位数将被存储在一个数组中,与它类似的其他数字。因此,需要两个函数来确保安全存储和将两个int16_t值<
浏览 5
提问于2021-06-30
得票数 2
回答已采纳
2
回答
是否允许src和dest
的
memcpy
论点重叠?
、
我需要转换字节缓冲区
的
内容。当然,我开始编写
memcpy
,但后来意识到它可能为源代码和dest提供了restrict说明符。我
的
实现(
MSVC
,2013年)似乎没有。
memcpy
列出了有和没有restrict
的
两个版本,但我不明白--我不认为它们是过载,我不清楚编译器如何正确地确定要选择哪个版本。另一方面,
memcpy
函数可以在运行时分析地址和count参数,以确定地址范围是否重叠。 那么,是否允许使用重叠参数调用
memcpy
?如果没有,是否有比普通f
浏览 6
提问于2016-03-03
得票数 0
回答已采纳
1
回答
在调试中覆盖
memcpy
工作,但在发布时没有覆盖吗?
、
、
、
我想用库中
的
那个来覆盖标准
的
memcpy
。当我用Debug编译时,它工作得很好,当我查看反汇编时,它将使用SSE指令调用A_
memcpy
。但是,当我用发行版编译时,它不会调用A_
memcpy</e
浏览 0
提问于2011-12-10
得票数 0
回答已采纳
1
回答
为什么constexpr上下文使编译器失败,而w/o使编译器
优化
得很完美?
、
、
、
、
我和constexpr玩过,发现了一些有趣
的
行为: 在某些情况下,在函数前面添加constexpr使GCC能够更努力地进行
优化
,从而使函数完全
优化
,并且只提供计算值。但是,从constexpr上下文中调用这样一个完全
优化
的
函数会导致错误,因为它在内部使用(编译器内置)函数/本质,而这些函数没有标记为constexpr (特别是在
memcpy
中)。C++提案 (将其转化为C++20)想要像
memcpy
constexpr这样
的
函数(见中<e
浏览 2
提问于2020-03-06
得票数 1
回答已采纳
1
回答
错误: VS代码中应为";“(使用宏)
我有以下代码: int a = 5, b = 10; "» Values before swap:\n\t" "A -> %d\n\t&
浏览 0
提问于2021-09-14
得票数 1
3
回答
针对核心2或核心i7架构完全
优化
的
memcpy
/memmove?
、
、
配备DDR3双通道内存
的
Core2处理器
的
理论最大内存带宽令人印象深刻:根据体系结构上
的
,每秒10+或20+ or。但是,常用
的
memcpy
()调用不能做到这一点。(3 GB/s是我在这类系统上见过
的
最高速率。)这很可能是因为操作系统供应商要求根据处理器
的
特性为每个处理器行调优
memcpy
(),因此常用
的
memcpy
()实现在许多品牌和行上都应该是合理
的
。我
的
问题是:有没
浏览 2
提问于2009-03-05
得票数 10
回答已采纳
点击加载更多
扫码
添加站长 进交流群
领取专属
10元无门槛券
手把手带您无忧上云
相关
资讯
微软开源 MSVC 的 C++ 标准库
MSVC和Visual Studio 代码诊断的未来
DNS中的“无效Rdata”
摆脱无效报警?十年运维监控报警优化经验总结
说说无效的线程和进程ID
热门
标签
更多标签
云服务器
ICP备案
腾讯会议
云直播
对象存储
活动推荐
运营活动
广告
关闭
领券