我有两个C++算法的实现,给他们打电话A和B.A和之间的唯一区别B是A使用std::unordered_map<int, int> hashmap;但B使用google::dense_hash_map<int, int> hashmap;.
我找到了一个A比较慢的输入,B我无法理解为什么.
对于相同的输入,我运行 sudo perf record -e instructions ./A input.txt
然后我得到这个结果:
Overhead Command Shared Object Symbol
65.90% A libc-2.23.so [.] __memset_sse2
6.63% A libc-2.23.so [.] _int_malloc
3.44% A libc-2.23.so [.] malloc
2.61% A libc-2.23.so [.] _int_free
Run Code Online (Sandbox Code Playgroud)
当我做同样B更快的时候,我得到以下内容:
Overhead Command Shared Object Symbol
15.17% B libc-2.23.so [.] _int_malloc
14.94% B B [.] B::func1()
5.72% B B [.] B::func2()
5.58% B B [.] B::func3()
Run Code Online (Sandbox Code Playgroud)
__memset_sse2它是什么以及为什么执行如此多的指令?