前两天为了写敏感词过滤,用了multimap数据结构来存敏感词,结果发现效率上面其实不是很理想。
后来简单测了一下,发现主要是multimap的find和count的效率是相当的低,(一直以为对于map来说,find和count的效率应该不错的)。数据大致如下:
对于9833bytes目标数据,681条样本数据的map,进行6678400次循环,count大约耗时1.7秒,find大约耗时2.8秒。上面的数据是在AMD Athlon 64*2 Dual 5000+ 2.6Hz的cpu情况下进行的计算。具体的数据结构不好,看样子下次等看一下stl之后,看看能不能重写map的实现了。
又定义了A,B,C三个依次派生的类,测得一个虚函数调用(只有一层继承关系的)大约耗时0.3125微妙。这个效率其实很高,耗时还是相当的低了,至少可以满足要求。