以下是微软CRT实现memcmp的:实施memcmp
int memcmp(const void* buf1,
const void* buf2,
size_t count)
{
if(!count)
return(0);
while(--count && *(char*)buf1 == *(char*)buf2) {
buf1 = (char*)buf1 + 1;
buf2 = (char*)buf2 + 1;
}
return(*((unsigned char*)buf1) - *((unsigned char*)buf2));
}
它基本上执行由字节比较字节。
我的问题是两个部分:
- 有什么理由不这样改变通过INT比较一个int直到
count < sizeof(int)
,然后按字节比较什么仍然做字节? - 如果我要做1,是否有任何潜在的/明显的问题?
注意:我根本不使用CRT,所以我必须实现这个功能。我只是在寻找如何正确实施它的建议。
大部分情况并非如此。假设你在优化的基础上进行编译,它将转变为编译器本身,而不是调用CRT的实现。 – 2011-02-16 15:19:15
在C标签中添加,因为这是一个真正的C问题 – CashCow 2011-02-16 15:46:34
优化时,需要考虑的一个问题是*在看到任何重大改进之前需要多大的数据大小?*有时执行该函数的开销占用更多时间比实际的比较。 – 2011-02-16 17:41:26