単位はsecで、明らかにチェックが律速です。
TIME IN load: 0.11
TIME IN check: 14.29
TIME IN size: 0.00
TIME IN unload: 0.00
TIME IN TOTAL: 14.40

ハッシュの重複が起きたときは+1ずつ移動して空いたところに格納するようにしています。
最大で+30位ずれたところに格納される単語があるので、
チェックの時に律速になってるのかもしれません。
これが連結リストを作ると削れるかも。
あと、前置詞とか「I」とかの頻出の単語を決め打ちでチェックしようとしましたが
余計に時間がかかりました。。。

他スレでifの代わりにfor使ってるソース見ましたけど、
これは速度稼ぎと理解してOKですかね。
ここらへんの技を持ってないので、よくまとまっているサイトか何かがあれば
教えてもらえると助かります。
流れがC固有の話になるようだったら関連スレに移動しますので誘導お願いします。