什么是正确和好的实施方式__hash__()?
我在谈论返回哈希码的函数,该哈希码随后用于将对象插入哈希表,即字典.
当__hash__()返回一个整数并用于将对象"分箱"为哈希表时,我假设返回的整数的值应该为公共数据均匀分布(以最小化冲突).获得这些价值观的好习惯是什么?碰撞是一个问题吗?在我的例子中,我有一个小类,它充当一个容器类,包含一些int,一些浮点数和一个字符串.
我是使用SSE/SSE2指令优化代码的新手,直到现在我还没有走得太远.据我所知,一个常见的SSE优化函数如下所示:
void sse_func(const float* const ptr, int len){
if( ptr is aligned )
{
for( ... ){
// unroll loop by 4 or 2 elements
}
for( ....){
// handle the rest
// (non-optimized code)
}
} else {
for( ....){
// regular C code to handle non-aligned memory
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如何正确确定内存ptr点是否与16字节对齐?我认为我必须包含非对齐内存的常规C代码路径,因为我无法确保传递给此函数的每个内存都将对齐.使用内在函数将数据从未对齐的内存加载到SSE寄存器似乎非常慢(甚至比常规C代码慢).
先感谢您...
c ×1
dictionary ×1
hashcode ×1
hashtable ×1
memory ×1
optimization ×1
python ×1
simd ×1
sse ×1