Skip to content

8354674: AArch64: Intrinsify Unsafe::setMemory #25147

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 7 commits into
base: master
Choose a base branch
from

Conversation

theRealAph
Copy link
Contributor

@theRealAph theRealAph commented May 9, 2025

This intrinsic is generally faster than the current implementation for Panama segment operations for all writes larger than about 8 bytes in size, increasing to more than 2* the performance on larger memory blocks on Graviton 2, between "panama" (C2 generated, what we use now) and "unsafe" (this intrinsic).

Benchmark                       (aligned)  (size)  Mode  Cnt     Score    Error  Units
MemorySegmentFillUnsafe.panama       true  262143  avgt   10  7295.638 ±  0.422  ns/op
MemorySegmentFillUnsafe.panama      false  262143  avgt   10  8345.300 ± 80.161  ns/op
MemorySegmentFillUnsafe.unsafe       true  262143  avgt   10  2930.594 ±  0.180  ns/op
MemorySegmentFillUnsafe.unsafe      false  262143  avgt   10  3136.828 ±  0.232  ns/op

Progress

  • Change must be properly reviewed (1 review required, with at least 1 Reviewer)
  • Change must not contain extraneous whitespace
  • Commit message must refer to an issue

Issue

  • JDK-8354674: AArch64: Intrinsify Unsafe::setMemory (Enhancement - P4)

Reviewing

Using git

Checkout this PR locally:
$ git fetch https://git.openjdk.org/jdk.git pull/25147/head:pull/25147
$ git checkout pull/25147

Update a local copy of the PR:
$ git checkout pull/25147
$ git pull https://git.openjdk.org/jdk.git pull/25147/head

Using Skara CLI tools

Checkout this PR locally:
$ git pr checkout 25147

View PR using the GUI difftool:
$ git pr show -t 25147

Using diff file

Download this PR as a diff file:
https://git.openjdk.org/jdk/pull/25147.diff

Using Webrev

Link to Webrev Comment

@bridgekeeper
Copy link

bridgekeeper bot commented May 9, 2025

👋 Welcome back aph! A progress list of the required criteria for merging this PR into master will be added to the body of your pull request. There are additional pull request commands available for use with this pull request.

@openjdk
Copy link

openjdk bot commented May 9, 2025

❗ This change is not yet ready to be integrated.
See the Progress checklist in the description for automated requirements.

@openjdk openjdk bot added the rfr Pull request is ready for review label May 9, 2025
@openjdk
Copy link

openjdk bot commented May 9, 2025

@theRealAph The following labels will be automatically applied to this pull request:

  • core-libs
  • hotspot-compiler

When this pull request is ready to be reviewed, an "RFR" email will be sent to the corresponding mailing lists. If you would like to change these labels, use the /label pull request command.

@mlbridge
Copy link

mlbridge bot commented May 9, 2025

Webrevs

@theRealAph
Copy link
Contributor Author

Apple M1, small memory blocks:

Benchmark                       (aligned)  (size)  Mode  Cnt  Score   Error  Units
MemorySegmentFillUnsafe.panama       true       1  avgt   10  1.731 ± 0.001  ns/op
MemorySegmentFillUnsafe.panama       true       2  avgt   10  1.570 ± 0.001  ns/op
MemorySegmentFillUnsafe.panama       true       3  avgt   10  1.583 ± 0.014  ns/op
MemorySegmentFillUnsafe.panama       true       4  avgt   10  1.734 ± 0.014  ns/op
MemorySegmentFillUnsafe.panama       true       5  avgt   10  1.736 ± 0.001  ns/op
MemorySegmentFillUnsafe.panama       true       6  avgt   10  1.731 ± 0.001  ns/op
MemorySegmentFillUnsafe.panama       true       7  avgt   10  1.744 ± 0.002  ns/op
MemorySegmentFillUnsafe.panama       true       8  avgt   10  2.365 ± 0.005  ns/op
MemorySegmentFillUnsafe.panama       true      15  avgt   10  2.681 ± 0.001  ns/op
MemorySegmentFillUnsafe.panama       true      16  avgt   10  2.503 ± 0.003  ns/op
MemorySegmentFillUnsafe.panama       true      63  avgt   10  3.615 ± 0.003  ns/op
MemorySegmentFillUnsafe.panama       true      64  avgt   10  4.701 ± 0.056  ns/op
MemorySegmentFillUnsafe.panama       true     255  avgt   10  4.848 ± 0.004  ns/op
MemorySegmentFillUnsafe.panama       true     256  avgt   10  5.003 ± 0.003  ns/op
MemorySegmentFillUnsafe.panama      false       1  avgt   10  1.729 ± 0.001  ns/op
MemorySegmentFillUnsafe.panama      false       2  avgt   10  1.571 ± 0.003  ns/op
MemorySegmentFillUnsafe.panama      false       3  avgt   10  1.579 ± 0.010  ns/op
MemorySegmentFillUnsafe.panama      false       4  avgt   10  1.728 ± 0.002  ns/op
MemorySegmentFillUnsafe.panama      false       5  avgt   10  1.739 ± 0.019  ns/op
MemorySegmentFillUnsafe.panama      false       6  avgt   10  1.731 ± 0.002  ns/op
MemorySegmentFillUnsafe.panama      false       7  avgt   10  1.744 ± 0.012  ns/op
MemorySegmentFillUnsafe.panama      false       8  avgt   10  2.367 ± 0.002  ns/op
MemorySegmentFillUnsafe.panama      false      15  avgt   10  2.694 ± 0.030  ns/op
MemorySegmentFillUnsafe.panama      false      16  avgt   10  2.517 ± 0.057  ns/op
MemorySegmentFillUnsafe.panama      false      63  avgt   10  3.619 ± 0.009  ns/op
MemorySegmentFillUnsafe.panama      false      64  avgt   10  4.708 ± 0.057  ns/op
MemorySegmentFillUnsafe.panama      false     255  avgt   10  5.018 ± 0.057  ns/op
MemorySegmentFillUnsafe.panama      false     256  avgt   10  5.038 ± 0.068  ns/op
MemorySegmentFillUnsafe.unsafe       true       1  avgt   10  2.815 ± 0.002  ns/op
MemorySegmentFillUnsafe.unsafe       true       2  avgt   10  2.821 ± 0.022  ns/op
MemorySegmentFillUnsafe.unsafe       true       3  avgt   10  2.502 ± 0.002  ns/op
MemorySegmentFillUnsafe.unsafe       true       4  avgt   10  2.815 ± 0.004  ns/op
MemorySegmentFillUnsafe.unsafe       true       5  avgt   10  2.502 ± 0.003  ns/op
MemorySegmentFillUnsafe.unsafe       true       6  avgt   10  2.505 ± 0.022  ns/op
MemorySegmentFillUnsafe.unsafe       true       7  avgt   10  2.193 ± 0.019  ns/op
MemorySegmentFillUnsafe.unsafe       true       8  avgt   10  2.190 ± 0.002  ns/op
MemorySegmentFillUnsafe.unsafe       true      15  avgt   10  2.043 ± 0.027  ns/op
MemorySegmentFillUnsafe.unsafe       true      16  avgt   10  2.191 ± 0.003  ns/op
MemorySegmentFillUnsafe.unsafe       true      63  avgt   10  2.061 ± 0.040  ns/op
MemorySegmentFillUnsafe.unsafe       true      64  avgt   10  2.196 ± 0.027  ns/op
MemorySegmentFillUnsafe.unsafe       true     255  avgt   10  3.756 ± 0.001  ns/op
MemorySegmentFillUnsafe.unsafe       true     256  avgt   10  3.752 ± 0.002  ns/op
MemorySegmentFillUnsafe.unsafe      false       1  avgt   10  2.813 ± 0.001  ns/op
MemorySegmentFillUnsafe.unsafe      false       2  avgt   10  2.817 ± 0.003  ns/op
MemorySegmentFillUnsafe.unsafe      false       3  avgt   10  2.502 ± 0.003  ns/op
MemorySegmentFillUnsafe.unsafe      false       4  avgt   10  2.816 ± 0.002  ns/op
MemorySegmentFillUnsafe.unsafe      false       5  avgt   10  2.507 ± 0.027  ns/op
MemorySegmentFillUnsafe.unsafe      false       6  avgt   10  2.507 ± 0.025  ns/op
MemorySegmentFillUnsafe.unsafe      false       7  avgt   10  2.195 ± 0.025  ns/op
MemorySegmentFillUnsafe.unsafe      false       8  avgt   10  2.192 ± 0.005  ns/op
MemorySegmentFillUnsafe.unsafe      false      15  avgt   10  2.050 ± 0.025  ns/op
MemorySegmentFillUnsafe.unsafe      false      16  avgt   10  2.188 ± 0.001  ns/op
MemorySegmentFillUnsafe.unsafe      false      63  avgt   10  2.051 ± 0.027  ns/op
MemorySegmentFillUnsafe.unsafe      false      64  avgt   10  2.196 ± 0.015  ns/op
MemorySegmentFillUnsafe.unsafe      false     255  avgt   10  4.619 ± 0.029  ns/op
MemorySegmentFillUnsafe.unsafe      false     256  avgt   10  4.618 ± 0.047  ns/op

@theRealAph
Copy link
Contributor Author

Graviton 4, small memory blocks:

Benchmark                       (aligned)  (size)  Mode  Cnt  Score    Error  Units
MemorySegmentFillUnsafe.panama       true       1  avgt   10  1.970 ±  0.002  ns/op
MemorySegmentFillUnsafe.panama       true       2  avgt   10  1.966 ±  0.020  ns/op
MemorySegmentFillUnsafe.panama       true       3  avgt   10  1.963 ±  0.014  ns/op
MemorySegmentFillUnsafe.panama       true       4  avgt   10  1.989 ±  0.004  ns/op
MemorySegmentFillUnsafe.panama       true       5  avgt   10  2.030 ±  0.010  ns/op
MemorySegmentFillUnsafe.panama       true       6  avgt   10  2.027 ±  0.010  ns/op
MemorySegmentFillUnsafe.panama       true       7  avgt   10  2.077 ±  0.006  ns/op
MemorySegmentFillUnsafe.panama       true       8  avgt   10  2.557 ±  0.004  ns/op
MemorySegmentFillUnsafe.panama       true      15  avgt   10  3.176 ±  0.002  ns/op
MemorySegmentFillUnsafe.panama       true      16  avgt   10  2.779 ±  0.001  ns/op
MemorySegmentFillUnsafe.panama       true      63  avgt   10  4.302 ±  0.002  ns/op
MemorySegmentFillUnsafe.panama       true      64  avgt   10  4.292 ±  0.007  ns/op
MemorySegmentFillUnsafe.panama       true     255  avgt   10  6.311 ±  0.013  ns/op
MemorySegmentFillUnsafe.panama       true     256  avgt   10  5.394 ±  0.003  ns/op
MemorySegmentFillUnsafe.panama      false       1  avgt   10  1.970 ±  0.001  ns/op
MemorySegmentFillUnsafe.panama      false       2  avgt   10  1.937 ±  0.017  ns/op
MemorySegmentFillUnsafe.panama      false       3  avgt   10  1.954 ±  0.014  ns/op
MemorySegmentFillUnsafe.panama      false       4  avgt   10  1.985 ±  0.005  ns/op
MemorySegmentFillUnsafe.panama      false       5  avgt   10  2.006 ±  0.008  ns/op
MemorySegmentFillUnsafe.panama      false       6  avgt   10  2.015 ±  0.008  ns/op
MemorySegmentFillUnsafe.panama      false       7  avgt   10  2.138 ±  0.035  ns/op
MemorySegmentFillUnsafe.panama      false       8  avgt   10  2.553 ±  0.005  ns/op
MemorySegmentFillUnsafe.panama      false      15  avgt   10  3.178 ±  0.002  ns/op
MemorySegmentFillUnsafe.panama      false      16  avgt   10  2.775 ±  0.005  ns/op
MemorySegmentFillUnsafe.panama      false      63  avgt   10  4.296 ±  0.007  ns/op
MemorySegmentFillUnsafe.panama      false      64  avgt   10  4.290 ±  0.001  ns/op
MemorySegmentFillUnsafe.panama      false     255  avgt   10  6.334 ±  0.013  ns/op
MemorySegmentFillUnsafe.panama      false     256  avgt   10  5.472 ±  0.009  ns/op
MemorySegmentFillUnsafe.unsafe       true       1  avgt   10  3.218 ±  0.001  ns/op
MemorySegmentFillUnsafe.unsafe       true       2  avgt   10  2.860 ±  0.001  ns/op
MemorySegmentFillUnsafe.unsafe       true       3  avgt   10  2.860 ±  0.001  ns/op
MemorySegmentFillUnsafe.unsafe       true       4  avgt   10  2.860 ±  0.001  ns/op
MemorySegmentFillUnsafe.unsafe       true       5  avgt   10  2.860 ±  0.001  ns/op
MemorySegmentFillUnsafe.unsafe       true       6  avgt   10  2.503 ±  0.001  ns/op
MemorySegmentFillUnsafe.unsafe       true       7  avgt   10  2.860 ±  0.001  ns/op
MemorySegmentFillUnsafe.unsafe       true       8  avgt   10  2.145 ±  0.001  ns/op
MemorySegmentFillUnsafe.unsafe       true      15  avgt   10  2.886 ±  0.100  ns/op
MemorySegmentFillUnsafe.unsafe       true      16  avgt   10  2.145 ±  0.001  ns/op
MemorySegmentFillUnsafe.unsafe       true      63  avgt   10  3.781 ±  0.013  ns/op
MemorySegmentFillUnsafe.unsafe       true      64  avgt   10  2.735 ±  0.016  ns/op
MemorySegmentFillUnsafe.unsafe       true     255  avgt   10  5.079 ±  0.014  ns/op
MemorySegmentFillUnsafe.unsafe       true     256  avgt   10  4.007 ±  0.112  ns/op
MemorySegmentFillUnsafe.unsafe      false       1  avgt   10  3.218 ±  0.001  ns/op
MemorySegmentFillUnsafe.unsafe      false       2  avgt   10  2.860 ±  0.001  ns/op
MemorySegmentFillUnsafe.unsafe      false       3  avgt   10  2.861 ±  0.001  ns/op
MemorySegmentFillUnsafe.unsafe      false       4  avgt   10  2.864 ±  0.016  ns/op
MemorySegmentFillUnsafe.unsafe      false       5  avgt   10  2.860 ±  0.001  ns/op
MemorySegmentFillUnsafe.unsafe      false       6  avgt   10  2.503 ±  0.001  ns/op
MemorySegmentFillUnsafe.unsafe      false       7  avgt   10  2.860 ±  0.001  ns/op
MemorySegmentFillUnsafe.unsafe      false       8  avgt   10  2.145 ±  0.001  ns/op
MemorySegmentFillUnsafe.unsafe      false      15  avgt   10  2.571 ±  0.040  ns/op
MemorySegmentFillUnsafe.unsafe      false      16  avgt   10  2.146 ±  0.001  ns/op
MemorySegmentFillUnsafe.unsafe      false      63  avgt   10  4.531 ±  0.021  ns/op
MemorySegmentFillUnsafe.unsafe      false      64  avgt   10  5.134 ±  0.099  ns/op
MemorySegmentFillUnsafe.unsafe      false     255  avgt   10  6.603 ±  0.031  ns/op
MemorySegmentFillUnsafe.unsafe      false     256  avgt   10  7.148 ±  0.025  ns/op

@theRealAph
Copy link
Contributor Author

Apple M1:

Benchmark                              (ELEM_SIZE)  Mode  Cnt        Score       Error  Units
SegmentBulkFill.heapSegmentFillJava              2  avgt   10        1.727 ±     0.017  ns/op
SegmentBulkFill.heapSegmentFillJava              3  avgt   10        1.721 ±     0.002  ns/op
SegmentBulkFill.heapSegmentFillJava              4  avgt   10        1.876 ±     0.002  ns/op
SegmentBulkFill.heapSegmentFillJava              5  avgt   10        1.876 ±     0.001  ns/op
SegmentBulkFill.heapSegmentFillJava              6  avgt   10        1.876 ±     0.002  ns/op
SegmentBulkFill.heapSegmentFillJava              7  avgt   10        1.876 ±     0.002  ns/op
SegmentBulkFill.heapSegmentFillJava              8  avgt   10        2.502 ±     0.003  ns/op
SegmentBulkFill.heapSegmentFillJava             64  avgt   10        4.064 ±     0.002  ns/op
SegmentBulkFill.heapSegmentFillJava            512  avgt   10        6.601 ±     0.051  ns/op
SegmentBulkFill.heapSegmentFillJava           4096  avgt   10       44.050 ±     0.076  ns/op
SegmentBulkFill.heapSegmentFillJava          32768  avgt   10      330.328 ±     0.450  ns/op
SegmentBulkFill.heapSegmentFillJava         262144  avgt   10     4138.154 ±     6.509  ns/op
SegmentBulkFill.heapSegmentFillJava        2097152  avgt   10    33089.966 ±    48.068  ns/op
SegmentBulkFill.heapSegmentFillJava       16777216  avgt   10   352669.548 ±   571.433  ns/op
SegmentBulkFill.heapSegmentFillJava      134217728  avgt   10  4482510.192 ±  7177.637  ns/op
SegmentBulkFill.heapSegmentFillLoop              2  avgt   10        1.977 ±     0.003  ns/op
SegmentBulkFill.heapSegmentFillLoop              3  avgt   10        3.447 ±     0.002  ns/op
SegmentBulkFill.heapSegmentFillLoop              4  avgt   10        4.073 ±     0.042  ns/op
SegmentBulkFill.heapSegmentFillLoop              5  avgt   10        4.377 ±     0.004  ns/op
SegmentBulkFill.heapSegmentFillLoop              6  avgt   10        5.337 ±     0.071  ns/op
SegmentBulkFill.heapSegmentFillLoop              7  avgt   10        5.629 ±     0.004  ns/op
SegmentBulkFill.heapSegmentFillLoop              8  avgt   10        5.947 ±     0.010  ns/op
SegmentBulkFill.heapSegmentFillLoop             64  avgt   10        8.127 ±     0.003  ns/op
SegmentBulkFill.heapSegmentFillLoop            512  avgt   10       16.045 ±     0.027  ns/op
SegmentBulkFill.heapSegmentFillLoop           4096  avgt   10       46.627 ±     0.164  ns/op
SegmentBulkFill.heapSegmentFillLoop          32768  avgt   10      333.233 ±     1.040  ns/op
SegmentBulkFill.heapSegmentFillLoop         262144  avgt   10     4134.009 ±    11.125  ns/op
SegmentBulkFill.heapSegmentFillLoop        2097152  avgt   10    33148.671 ±   322.905  ns/op
SegmentBulkFill.heapSegmentFillLoop       16777216  avgt   10   343832.913 ±   233.881  ns/op
SegmentBulkFill.heapSegmentFillLoop      134217728  avgt   10  4475821.911 ±  6101.380  ns/op
SegmentBulkFill.heapSegmentFillUnsafe            2  avgt   10        3.133 ±     0.034  ns/op
SegmentBulkFill.heapSegmentFillUnsafe            3  avgt   10        3.130 ±     0.005  ns/op
SegmentBulkFill.heapSegmentFillUnsafe            4  avgt   10        3.128 ±     0.004  ns/op
SegmentBulkFill.heapSegmentFillUnsafe            5  avgt   10        3.139 ±     0.030  ns/op
SegmentBulkFill.heapSegmentFillUnsafe            6  avgt   10        3.135 ±     0.035  ns/op
SegmentBulkFill.heapSegmentFillUnsafe            7  avgt   10        3.135 ±     0.030  ns/op
SegmentBulkFill.heapSegmentFillUnsafe            8  avgt   10        2.665 ±     0.006  ns/op
SegmentBulkFill.heapSegmentFillUnsafe           64  avgt   10        2.841 ±     0.032  ns/op
SegmentBulkFill.heapSegmentFillUnsafe          512  avgt   10        6.246 ±     0.100  ns/op
SegmentBulkFill.heapSegmentFillUnsafe         4096  avgt   10       41.241 ±     0.107  ns/op
SegmentBulkFill.heapSegmentFillUnsafe        32768  avgt   10      331.001 ±     4.521  ns/op
SegmentBulkFill.heapSegmentFillUnsafe       262144  avgt   10     3038.808 ±    29.750  ns/op
SegmentBulkFill.heapSegmentFillUnsafe      2097152  avgt   10    21996.375 ±  2617.947  ns/op
SegmentBulkFill.heapSegmentFillUnsafe     16777216  avgt   10   241814.864 ± 24300.854  ns/op
SegmentBulkFill.heapSegmentFillUnsafe    134217728  avgt   10  2811655.392 ± 24737.911  ns/op

@theRealAph
Copy link
Contributor Author

Graviton 4:

Benchmark                              (ELEM_SIZE)  Mode  Cnt        Score      Error  Units
SegmentBulkFill.heapSegmentFillJava              2  avgt   10        2.324 ±    0.066  ns/op
SegmentBulkFill.heapSegmentFillJava              3  avgt   10        2.427 ±    0.031  ns/op
SegmentBulkFill.heapSegmentFillJava              4  avgt   10        2.231 ±    0.009  ns/op
SegmentBulkFill.heapSegmentFillJava              5  avgt   10        2.523 ±    0.040  ns/op
SegmentBulkFill.heapSegmentFillJava              6  avgt   10        2.632 ±    0.017  ns/op
SegmentBulkFill.heapSegmentFillJava              7  avgt   10        2.394 ±    0.007  ns/op
SegmentBulkFill.heapSegmentFillJava              8  avgt   10        3.004 ±    0.032  ns/op
SegmentBulkFill.heapSegmentFillJava             64  avgt   10        4.813 ±    0.417  ns/op
SegmentBulkFill.heapSegmentFillJava            512  avgt   10        9.151 ±    0.040  ns/op
SegmentBulkFill.heapSegmentFillJava           4096  avgt   10       60.127 ±    0.078  ns/op
SegmentBulkFill.heapSegmentFillJava          32768  avgt   10      461.292 ±    2.127  ns/op
SegmentBulkFill.heapSegmentFillJava         262144  avgt   10     3666.851 ±    0.280  ns/op
SegmentBulkFill.heapSegmentFillJava        2097152  avgt   10    35169.510 ±   22.507  ns/op
SegmentBulkFill.heapSegmentFillJava       16777216  avgt   10   227182.710 ±  903.546  ns/op
SegmentBulkFill.heapSegmentFillJava      134217728  avgt   10  1946761.410 ± 3033.447  ns/op
SegmentBulkFill.heapSegmentFillLoop              2  avgt   10        2.902 ±    0.038  ns/op
SegmentBulkFill.heapSegmentFillLoop              3  avgt   10        3.870 ±    0.004  ns/op
SegmentBulkFill.heapSegmentFillLoop              4  avgt   10        5.438 ±    0.013  ns/op
SegmentBulkFill.heapSegmentFillLoop              5  avgt   10        5.714 ±    0.033  ns/op
SegmentBulkFill.heapSegmentFillLoop              6  avgt   10        5.748 ±    0.019  ns/op
SegmentBulkFill.heapSegmentFillLoop              7  avgt   10        5.909 ±    0.004  ns/op
SegmentBulkFill.heapSegmentFillLoop              8  avgt   10        6.330 ±    0.295  ns/op
SegmentBulkFill.heapSegmentFillLoop             64  avgt   10        8.769 ±    0.003  ns/op
SegmentBulkFill.heapSegmentFillLoop            512  avgt   10       16.935 ±    0.007  ns/op
SegmentBulkFill.heapSegmentFillLoop           4096  avgt   10       57.822 ±    0.510  ns/op
SegmentBulkFill.heapSegmentFillLoop          32768  avgt   10      376.849 ±    0.311  ns/op
SegmentBulkFill.heapSegmentFillLoop         262144  avgt   10     3059.064 ±    0.419  ns/op
SegmentBulkFill.heapSegmentFillLoop        2097152  avgt   10    24398.571 ±    8.618  ns/op
SegmentBulkFill.heapSegmentFillLoop       16777216  avgt   10   225721.136 ±  608.041  ns/op
SegmentBulkFill.heapSegmentFillLoop      134217728  avgt   10  1940987.569 ± 2156.239  ns/op
SegmentBulkFill.heapSegmentFillUnsafe            2  avgt   10        3.628 ±    0.022  ns/op
SegmentBulkFill.heapSegmentFillUnsafe            3  avgt   10        3.670 ±    0.011  ns/op
SegmentBulkFill.heapSegmentFillUnsafe            4  avgt   10        3.583 ±    0.002  ns/op
SegmentBulkFill.heapSegmentFillUnsafe            5  avgt   10        3.651 ±    0.016  ns/op
SegmentBulkFill.heapSegmentFillUnsafe            6  avgt   10        3.659 ±    0.015  ns/op
SegmentBulkFill.heapSegmentFillUnsafe            7  avgt   10        3.687 ±    0.016  ns/op
SegmentBulkFill.heapSegmentFillUnsafe            8  avgt   10        3.193 ±    0.022  ns/op
SegmentBulkFill.heapSegmentFillUnsafe           64  avgt   10        3.365 ±    0.034  ns/op
SegmentBulkFill.heapSegmentFillUnsafe          512  avgt   10        6.443 ±    0.006  ns/op
SegmentBulkFill.heapSegmentFillUnsafe         4096  avgt   10       48.261 ±    0.081  ns/op
SegmentBulkFill.heapSegmentFillUnsafe        32768  avgt   10      389.793 ±    0.777  ns/op
SegmentBulkFill.heapSegmentFillUnsafe       262144  avgt   10     3123.758 ±    1.048  ns/op
SegmentBulkFill.heapSegmentFillUnsafe      2097152  avgt   10    25039.904 ±   55.467  ns/op
SegmentBulkFill.heapSegmentFillUnsafe     16777216  avgt   10   223579.037 ±  306.005  ns/op
SegmentBulkFill.heapSegmentFillUnsafe    134217728  avgt   10  1931370.983 ± 1110.364  ns/op

@@ -0,0 +1,93 @@
/*
* Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

2025 maybe more suitable

@minborg
Copy link
Contributor

minborg commented May 12, 2025

Looking at the improvements made, I suggest we also change (in SegmentBulkOperations):

private static final int NATIVE_THRESHOLD_FILL = powerOfPropertyOr("fill", Architecture.isAARCH64() ? 18 : 5); 

to

 private static final int NATIVE_THRESHOLD_FILL = powerOfPropertyOr("fill",  5);

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

Successfully merging this pull request may close these issues.

3 participants