@@ -501,6 +501,44 @@ func BenchmarkUnion100Unsafe(b *testing.B) {
501501 benchUnion (b , 100 , NewThreadUnsafeSet (), NewThreadUnsafeSet ())
502502}
503503
504+ func benchEach (b * testing.B , n int , s Set ) {
505+ nums := nrand (n )
506+ for _ , v := range nums {
507+ s .Add (v )
508+ }
509+
510+ b .ResetTimer ()
511+ for i := 0 ; i < b .N ; i ++ {
512+ s .Each (func (elem interface {}) bool {
513+ return false
514+ })
515+ }
516+ }
517+
518+ func BenchmarkEach1Safe (b * testing.B ) {
519+ benchEach (b , 1 , NewSet ())
520+ }
521+
522+ func BenchmarkEach1Unsafe (b * testing.B ) {
523+ benchEach (b , 1 , NewThreadUnsafeSet ())
524+ }
525+
526+ func BenchmarkEach10Safe (b * testing.B ) {
527+ benchEach (b , 10 , NewSet ())
528+ }
529+
530+ func BenchmarkEach10Unsafe (b * testing.B ) {
531+ benchEach (b , 10 , NewThreadUnsafeSet ())
532+ }
533+
534+ func BenchmarkEach100Safe (b * testing.B ) {
535+ benchEach (b , 100 , NewSet ())
536+ }
537+
538+ func BenchmarkEach100Unsafe (b * testing.B ) {
539+ benchEach (b , 100 , NewThreadUnsafeSet ())
540+ }
541+
504542func benchIter (b * testing.B , n int , s Set ) {
505543 nums := nrand (n )
506544 for _ , v := range nums {
0 commit comments