3838
3939import java .lang .foreign .Arena ;
4040import java .lang .foreign .MemorySegment ;
41+ import java .lang .foreign .ValueLayout ;
4142import java .nio .ByteBuffer ;
4243import java .util .Arrays ;
4344import java .util .concurrent .TimeUnit ;
@@ -74,6 +75,20 @@ public void arraysFill() {
7475 Arrays .fill (array , (byte ) 0 );
7576 }
7677
78+ @ Benchmark
79+ public void arraysFillLoop () {
80+ for (int i = 0 ; i < array .length ; i ++) {
81+ array [i ] = 0 ;
82+ }
83+ }
84+
85+ @ Benchmark
86+ public void bufferFillLoop () {
87+ for (int i = 0 ; i < array .length ; i ++) {
88+ buffer .put (i , (byte )0 );
89+ }
90+ }
91+
7792 @ Fork (value = 3 , jvmArgs = {"-Djava.lang.foreign.native.threshold.power.fill=31" })
7893 @ Benchmark
7994 public void heapSegmentFillJava () {
@@ -86,6 +101,13 @@ public void heapSegmentFillUnsafe() {
86101 heapSegment .fill ((byte ) 0 );
87102 }
88103
104+ @ Benchmark
105+ public void heapSegmentFillLoop () {
106+ for (long i = 0 ; i < heapSegment .byteSize (); i ++) {
107+ heapSegment .set (ValueLayout .JAVA_BYTE , i , (byte ) 0 );
108+ }
109+ }
110+
89111 @ Fork (value = 3 , jvmArgs = {"-Djava.lang.foreign.native.threshold.power.fill=31" })
90112 @ Benchmark
91113 public void nativeSegmentFillJava () {
@@ -98,6 +120,13 @@ public void nativeSegmentFillUnsafe() {
98120 nativeSegment .fill ((byte ) 0 );
99121 }
100122
123+ @ Benchmark
124+ public void nativeSegmentFillLoop () {
125+ for (long i = 0 ; i < nativeSegment .byteSize (); i ++) {
126+ nativeSegment .set (ValueLayout .JAVA_BYTE , i , (byte ) 0 );
127+ }
128+ }
129+
101130 @ Fork (value = 3 , jvmArgs = {"-Djava.lang.foreign.native.threshold.power.fill=31" })
102131 @ Benchmark
103132 public void unalignedSegmentFillJava () {
@@ -110,4 +139,11 @@ public void unalignedSegmentFillUnsafe() {
110139 unalignedSegment .fill ((byte ) 0 );
111140 }
112141
142+ @ Benchmark
143+ public void unalignedSegmentFillLoop () {
144+ for (long i = 0 ; i < unalignedSegment .byteSize (); i ++) {
145+ unalignedSegment .set (ValueLayout .JAVA_BYTE , i , (byte ) 0 );
146+ }
147+ }
148+
113149}
0 commit comments