チャネルよりもはるかに高速に動作するロックフリーリングを提供するこのライブラリを見つけました: https://github.com/textnode/gringo (特に GOMAXPROCS > 1 で非常に高速に動作します)
しかし興味深い部分は、キューの状態を管理するための構造体です。
type Gringo struct {
padding1 [8]uint64
lastCommittedIndex uint64
padding2 [8]uint64
nextFreeIndex uint64
padding3 [8]uint64
readerIndex uint64
padding4 [8]uint64
contents [queueSize]Payload
padding5 [8]uint64
}
「paddingX [8]uint64」フィールドを削除すると、動作が約 20% 遅くなります。それはどのようにできますか?
また、このロックフリーアルゴリズムがチャネルよりもはるかに高速であり、バッファリングされている理由を誰かが説明してくれたことを感謝しますか?