10

チャネルよりもはるかに高速に動作するロックフリーリングを提供するこのライブラリを見つけました: 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% 遅くなります。それはどのようにできますか?

また、このロックフリーアルゴリズムがチャネルよりもはるかに高速であり、バッファリングされている理由を誰かが説明してくれたことを感謝しますか?

4

2 に答える 2