Mat*_*att 2 c++ optimization g++
我有一个UUID类,它有一个内置的16字节缓冲区用于UUID.
的>,<,==,!=重载运营商只需要调用memcmp()超过16字节的值.
由于此类仅用于64位架构,因此使用两个64位整数比较128位更快吗?
例如,而不是:
memcmp(uuid1, uuid2, 16) == 0
Run Code Online (Sandbox Code Playgroud)
我可以这样做:
unsigned long* id1 = (unsigned long*)uuid1;
unsigned long* id2 = (unsigned long*)uuid2;
bool equal = (id1[0] == id2[0] && id1[1] == id2[1]);
Run Code Online (Sandbox Code Playgroud)
或者memcmp()G ++使用的函数是否已经进行了这种优化?另一方面,不使用memcmp()会避免函数调用开销是吗?
对于今天的处理器,比较受到从内存中获取字节的速度的限制很有可能.比较本身可能与它并行,无论是逐字节还是64位×64位.唯一可以肯定的方法是对其进行基准测试.
至于调用开销,memcmp很可能是作为内部函数实现的,根本没有开销.检查生成的装配清单以确定.
| 归档时间: |
|
| 查看次数: |
4054 次 |
| 最近记录: |