问题标签 [memcmp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 将无符号字符读入字符串
我有一个无符号字符数组:
我想将该数组中的前 N 个无符号字符读入一个字符串,但是在查看之后strncpy()
,这似乎只需要指向有符号字符的指针。
我应该看memcpy()
吗?
c# - 是否有用于比较 Mono 中的字节数组的 memcmp 等价物?
memcmp
通过从 导入函数来比较 .Net 中的两个字节数组有一种众所周知的效率,如此处msvcrt.dll
所述。
单声道中是否有等效的库导入?在 Linux 或 Windows 上运行单声道时是否需要有所不同?还是有另一种在单声道中效果很好的快速字节数组比较技术?我正在寻找比仅在 c# 中迭代数组更好的东西。
更新
根据 Matt Patenaude 的评论,我认为这可能会很好:
但我还没有尝试过。我以前从未在单声道上做过 p/invoke。我正在使用pinvoke.net上推荐的签名。这会兼容吗?
寻找一个专注于单声道的答案。谢谢。
c++ - 为什么这比 memcmp 慢
我正在尝试比较两行pixel
s。
Apixel
被定义为struct
包含 4 个float
值 (RGBA) 的 a。
我不使用的原因memcmp
是因为我需要返回第一个不同像素的位置,但这memcmp
是不行的。
我的第一个实现使用SSE
内在函数,并且比以下速度慢约 30% memcmp
:
然后我发现将值视为整数而不是浮点数会加快速度,现在只比memcmp
.
从我读到的其他问题来看,MS 的实现memcmp
也是使用SSE
. 我的问题是 MS 实现还有哪些我没有的技巧?即使进行逐字节比较,它如何仍然更快?
对齐是个问题吗?如果pixel
包含 4 个浮点数,是否已经在 16 字节边界上分配了像素数组?
我正在编译/o2
所有优化标志。
c - 为什么会出现分段错误?我正在使用 stat、mmap、nftw 和 memcmp 等
这是我的代码。我假设这与指针使用不当有关,或者我没有正确映射和取消映射我的内存。
谁能给我一些关于这个问题的见解?
编辑
我现在在使用 stat 函数之前声明我的 struct stat sb1 。之后,我再次收到分段错误。然后我注释掉我的 nftw() 调用并打印出 size 变量(它有一个合理的数字,所以我相信这是有效的)。新的错误是:
取消映射时出错。
c++ - 我可以将空指针传递给 memcmp 吗?
特别是,以下是明确定义的,还是表现出未定义的行为?
这在 C 和 C++ 之间有区别吗?理想情况下,请提供标准的报价。
c - 数组与 memcmp 比较与逐个元素比较
哪个实现更好,为什么?
使用 for 循环或 memcmp() 实现逐个元素进行比较
或者
c - mem比较数组以获取匹配字节数
memcmp()
只告诉我们哪个内存块更大/更小,因为它只返回-1,0,+1。有没有办法知道发生不匹配的匹配元素的数量a[]
和b[]
之后的数量。
这里memcmp(a, b, sizeof(int)* 3)
将返回-1。我想得到 2 作为答案 有没有一种方法可以借助memcmp
或一些类似的内置函数来获得匹配元素的数量
c - C结构的内部一致性
如果我有两个初始化为具有相同成员的 C 结构,我可以保证:
总是返回零?
c - memcmp 但需要将块与固定值进行比较
我需要将一块内存与 C 中的一个固定值进行比较。我可以用 memcmp 做到这一点吗?就像是:
memcmp (starting_address , fixed_value , num_byte)
我需要 fixed_value 是一个固定值而不是一个块的起始地址。
- 将固定值写入整个临时内存块不是一种选择,因为我的空间有限。
- 使用循环逐个写入和检查内存不是一种选择,因为它非常慢。
如果不可能,谁能告诉我一个与 memcmp 一样快(或更快)的解决方案?
谢谢,
编辑:假设我有 5GB 的内存可以容纳 0。我正在努力确保它们都是 0。检查块的第一个字节是否安全,然后执行以下操作:
memcmp (starting_address , starting_address + ONE_BYTE , FIVE_GB); ?
编辑:这就是为什么我需要使用 memcmp 而不是用户定义的循环:
这段代码运行了 546 个时钟周期:
与这个花费了 7669 个时钟滴答声的对比:
c - 在更新前比较(memcmp before memcpy),还是只更新,哪个性能更好?
上下文(虽然不重要),在 netfilter 模块中,我们使用如下结构:
跟踪 MAC 地址和 ipv6 地址。
用于处理 IPv6 地址更改:
- 我应该比较新旧值(memcmp),如果不同,则更新(memcpy)。
- 或者,我只是更新它。
两者都是有效的行为,因此性能是这里的主要关注点。
我发现了一个类似的问题:https ://jira.mongodb.org/browse/SERVER-66
他们似乎选择了“刚刚更新”的方式。