4

我正在尝试在 C 中实现一个字符频率函数。这个任务当然非常简单,只需遍历字符串并像这样递增:

for(cycle = 0; cycle < length; cycle++){
    integer = line[cycle];
    bins[ integer*length+cycle ]++;
}

现在,当这样做超过十亿次或更多时(是的,我的文件那么大),程序的这一部分变得非常耗时,因为必须访问数组 10e8 * 长度次。

我在谷歌上搜索了一段时间,找到了很多如何使用寄存器进行加法、乘法、除法等操作的示例,但由于我对 SSE、MMX 等一点也不熟悉。我不知道如何实现字符使用这些函数进行计数。

我希望减少花在此功能上的时间,因为可以同时读取 4 个字符。您能否向我展示正确的方向,或者更好地展示一段代码?

提前致谢。标记

4

0 回答 0