sjvanrossum commented on PR #34165: URL: https://github.com/apache/beam/pull/34165#issuecomment-2713224412
@kennknowles I've updated the experiment setup in the benchmark. I've reduced concurrent readers to 1, because as far as I know only the `ProcessElement` thread reads and writes the accumulator and a `GetSize` thread occassionally reads the accumulator concurrently in the SDF implementation and it's either similar or entirely single-threaded for the unbounded source implementation. I've also split these tests out into concurrents reads and writes and isolated reads and writes, because those concurrent reads only happen every so often and occasionally overlap with writes (observed in #32921 rarely triggering `ConcurrentModificationException`). With multiple concurrent readers I had observed 10-20% improvement with padding, but the improvements are barely noticeable now if at all (on my workstation). ``` Benchmark Mode Cnt Score Error Units KafkaIOUtilsBenchmark.ReadAndWriteAtomic avgt 15 12.948 ± 1.999 ns/op KafkaIOUtilsBenchmark.ReadAndWriteAtomic:atomicReadWhileWriting avgt 15 4.798 ± 0.200 ns/op KafkaIOUtilsBenchmark.ReadAndWriteAtomic:atomicWriteWhileReading avgt 15 21.098 ± 3.811 ns/op KafkaIOUtilsBenchmark.ReadAndWritePaddedAtomic avgt 15 13.676 ± 1.509 ns/op KafkaIOUtilsBenchmark.ReadAndWritePaddedAtomic:paddedAtomicReadWhileWriting avgt 15 4.598 ± 0.064 ns/op KafkaIOUtilsBenchmark.ReadAndWritePaddedAtomic:paddedAtomicWriteWhileReading avgt 15 22.755 ± 3.075 ns/op KafkaIOUtilsBenchmark.ReadAndWritePlain avgt 15 15.909 ± 1.780 ns/op KafkaIOUtilsBenchmark.ReadAndWritePlain:plainReadWhileWriting avgt 15 4.058 ± 0.160 ns/op KafkaIOUtilsBenchmark.ReadAndWritePlain:plainWriteWhileReading avgt 15 27.760 ± 3.589 ns/op KafkaIOUtilsBenchmark.ReadAndWriteSynchronizedPlain avgt 15 95.190 ± 1.845 ns/op KafkaIOUtilsBenchmark.ReadAndWriteSynchronizedPlain:synchronizedPlainReadWhileWriting avgt 15 98.039 ± 3.973 ns/op KafkaIOUtilsBenchmark.ReadAndWriteSynchronizedPlain:synchronizedPlainWriteWhileReading avgt 15 92.341 ± 2.358 ns/op KafkaIOUtilsBenchmark.ReadAndWriteVolatile avgt 15 26.432 ± 4.415 ns/op KafkaIOUtilsBenchmark.ReadAndWriteVolatile:volatileReadWhileWriting avgt 15 3.879 ± 0.056 ns/op KafkaIOUtilsBenchmark.ReadAndWriteVolatile:volatileWriteWhileReading avgt 15 48.984 ± 8.849 ns/op KafkaIOUtilsBenchmark.ReadAtomic avgt 15 2.185 ± 0.007 ns/op KafkaIOUtilsBenchmark.ReadPaddedAtomic avgt 15 2.193 ± 0.010 ns/op KafkaIOUtilsBenchmark.ReadPlain avgt 15 2.206 ± 0.011 ns/op KafkaIOUtilsBenchmark.ReadSynchronizedPlain avgt 15 7.975 ± 0.571 ns/op KafkaIOUtilsBenchmark.ReadVolatile avgt 15 2.199 ± 0.011 ns/op KafkaIOUtilsBenchmark.WriteAtomic avgt 15 8.183 ± 0.003 ns/op KafkaIOUtilsBenchmark.WritePaddedAtomic avgt 15 8.183 ± 0.003 ns/op KafkaIOUtilsBenchmark.WritePlain avgt 15 9.592 ± 0.746 ns/op KafkaIOUtilsBenchmark.WriteSynchronizedPlain avgt 15 11.145 ± 1.714 ns/op KafkaIOUtilsBenchmark.WriteVolatile avgt 15 11.967 ± 0.003 ns/op ``` I agree that it's not worth the hassle to maintain unless there's a significant upside so I've removed the layout padding from `MovingAvg` based on the results above. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: github-unsubscr...@beam.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org