CRC64のさまざまな実装を確認しました。例えば、this,thisおよびthis。これらすべての問題は、バイトで動作することです。しかし、64ビットシステムでは、long
(8バイト)で作業したいと思います。このようにして、私は反復を少なくする必要があります。たとえば、128バイトのデータの場合は、byte
を使用して、128回反復する必要がありますが、long
では16回しか反復する必要はありません。long(64ビット)を使用したCRCチェックサム
long
を使用するCRC64実装はありますか、1バイトよりも大きなワードサイズを使用していますか?これらのスキームは変更することができますか?
SSEが利用可能であれば、GCCはループをアンロールし、可能であれば128ビットのXMMレジスタを使用する可能性が最も高いです。だから、盲目的にコードを最適化する時間を過ごす前に、あなたのコンパイラが何をしているかを確認してください。 –
雅ですが、計算は周期的で、私はベクトル化できないと考えています。 – pythonic
コンパイラーよりもスマートにしようとする前に、それがいかにスマートであるかを確認してください。 GCCは多くのループ分析を行いますが、そのうちのいくつかはあなたが聞いたことがないと確信しています。それは、循環的な計算のためにさえループをアンロールすることができます(実際には特定の状況下で)。私はそれがあなたのケースではないと言っているわけではありませんが、独自の最適化を進める前に確認する必要があります。 –