[foreign-memaccess+abi] RFR: Add benchmarks to MemorySegmentVsBits [v2]

Gavin Ray duke at openjdk.org
Thu Jan 5 23:00:16 UTC 2023


On Wed, 4 Jan 2023 08:00:15 GMT, Per Minborg <pminborg at openjdk.org> wrote:

>> This PR proposes the addition of some benchmarks, for example using a LonBuffer and a VarHandle.
>
> Per Minborg has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Change to big endian for some variants

If anyone is interested, here are the results I got. I also added the bulk ByteBuffer method, as below:


    @Benchmark
    public void byteBufferBulk() {
        longBuffer.put(0, longs, 0, size);
    }


I'm running Fedora 38 Rawhide on WSL2, with 6.0.1 kernel and the below processor:
```sh-session
[user at MSI ~]$ uname -a
Linux MSI 6.0.1-locietta-WSL2-xanmod1 #1 SMP Wed Oct 12 22:14:49 UTC 2022 x86_64 GNU/Linux

[user at MSI ~]$ sudo lshw -short
H/W path    Device    Class      Description
============================================
/0/1                  memory     15GiB System memory
/0/2                  processor  11th Gen Intel(R) Core(TM) i7-11800H @ 2.30GHz


Results are:

MemorySegmentVsBits.bitsEquivalent                  1  avgt   30      4.091 ±   0.066  ns/op
MemorySegmentVsBits.bitsEquivalent                  2  avgt   30      5.851 ±   0.086  ns/op
MemorySegmentVsBits.bitsEquivalent                 16  avgt   30     31.527 ±   0.583  ns/op
MemorySegmentVsBits.bitsEquivalent                 64  avgt   30    127.531 ±   2.979  ns/op
MemorySegmentVsBits.bitsEquivalent                256  avgt   30    484.423 ±   9.550  ns/op
MemorySegmentVsBits.bitsEquivalent                512  avgt   30   1554.069 ±  20.114  ns/op
MemorySegmentVsBits.byteBuffer                      1  avgt   30      3.717 ±   0.070  ns/op
MemorySegmentVsBits.byteBuffer                      2  avgt   30      4.775 ±   0.100  ns/op
MemorySegmentVsBits.byteBuffer                     16  avgt   30     10.616 ±   0.121  ns/op
MemorySegmentVsBits.byteBuffer                     64  avgt   30     24.960 ±   0.393  ns/op
MemorySegmentVsBits.byteBuffer                    256  avgt   30    112.617 ±   2.424  ns/op
MemorySegmentVsBits.byteBuffer                    512  avgt   30    222.570 ±   3.518  ns/op
MemorySegmentVsBits.byteBufferBulk                  1  avgt   30     20.786 ±   1.493  ns/op
MemorySegmentVsBits.byteBufferBulk                  2  avgt   30     19.371 ±   0.426  ns/op
MemorySegmentVsBits.byteBufferBulk                 16  avgt   30     23.720 ±   1.228  ns/op
MemorySegmentVsBits.byteBufferBulk                 64  avgt   30     45.268 ±   0.895  ns/op
MemorySegmentVsBits.byteBufferBulk                256  avgt   30    115.257 ±   1.508  ns/op
MemorySegmentVsBits.byteBufferBulk                512  avgt   30    271.710 ±   4.398  ns/op
MemorySegmentVsBits.byteVarHandle                   1  avgt   30      2.089 ±   0.033  ns/op
MemorySegmentVsBits.byteVarHandle                   2  avgt   30      1.848 ±   0.032  ns/op
MemorySegmentVsBits.byteVarHandle                  16  avgt   30      4.296 ±   0.136  ns/op
MemorySegmentVsBits.byteVarHandle                  64  avgt   30      7.831 ±   0.373  ns/op
MemorySegmentVsBits.byteVarHandle                 256  avgt   30     12.824 ±   0.145  ns/op
MemorySegmentVsBits.byteVarHandle                 512  avgt   30     27.028 ±   1.252  ns/op
MemorySegmentVsBits.longBuffer                      1  avgt   30      2.491 ±   0.028  ns/op
MemorySegmentVsBits.longBuffer                      2  avgt   30      2.526 ±   0.040  ns/op
MemorySegmentVsBits.longBuffer                     16  avgt   30      6.653 ±   0.132  ns/op
MemorySegmentVsBits.longBuffer                     64  avgt   30     17.858 ±   0.195  ns/op
MemorySegmentVsBits.longBuffer                    256  avgt   30     62.664 ±   1.664  ns/op
MemorySegmentVsBits.longBuffer                    512  avgt   30    123.508 ±   2.895  ns/op
MemorySegmentVsBits.panamaHeap                      1  avgt   30      4.672 ±   0.163  ns/op
MemorySegmentVsBits.panamaHeap                      2  avgt   30      5.390 ±   0.099  ns/op
MemorySegmentVsBits.panamaHeap                     16  avgt   30      8.990 ±   0.220  ns/op
MemorySegmentVsBits.panamaHeap                     64  avgt   30     18.137 ±   1.122  ns/op
MemorySegmentVsBits.panamaHeap                    256  avgt   30     62.260 ±   0.727  ns/op
MemorySegmentVsBits.panamaHeap                    512  avgt   30    123.472 ±   1.329  ns/op
MemorySegmentVsBits.panamaHeapBulk                  1  avgt   30      5.413 ±   0.092  ns/op
MemorySegmentVsBits.panamaHeapBulk                  2  avgt   30      4.274 ±   0.058  ns/op
MemorySegmentVsBits.panamaHeapBulk                 16  avgt   30      5.123 ±   0.136  ns/op
MemorySegmentVsBits.panamaHeapBulk                 64  avgt   30      9.037 ±   0.358  ns/op
MemorySegmentVsBits.panamaHeapBulk                256  avgt   30     22.320 ±   0.299  ns/op
MemorySegmentVsBits.panamaHeapBulk                512  avgt   30     35.525 ±   0.626  ns/op
MemorySegmentVsBits.panamaNative                    1  avgt   30      4.564 ±   0.124  ns/op
MemorySegmentVsBits.panamaNative                    2  avgt   30      5.540 ±   0.112  ns/op
MemorySegmentVsBits.panamaNative                   16  avgt   30      8.913 ±   0.133  ns/op
MemorySegmentVsBits.panamaNative                   64  avgt   30     18.190 ±   0.335  ns/op
MemorySegmentVsBits.panamaNative                  256  avgt   30     60.941 ±   0.893  ns/op
MemorySegmentVsBits.panamaNative                  512  avgt   30    109.495 ±   1.711  ns/op
MemorySegmentVsBits.panamaNativeBulk                1  avgt   30      4.435 ±   0.114  ns/op
MemorySegmentVsBits.panamaNativeBulk                2  avgt   30      4.367 ±   0.063  ns/op
MemorySegmentVsBits.panamaNativeBulk               16  avgt   30      5.293 ±   0.084  ns/op
MemorySegmentVsBits.panamaNativeBulk               64  avgt   30      8.886 ±   0.362  ns/op
MemorySegmentVsBits.panamaNativeBulk              256  avgt   30     22.023 ±   0.666  ns/op
MemorySegmentVsBits.panamaNativeBulk              512  avgt   30     27.262 ±   1.223  ns/op
MemorySegmentVsBits.panamaNativeUnaligned           1  avgt   30      4.388 ±   0.065  ns/op
MemorySegmentVsBits.panamaNativeUnaligned           2  avgt   30      5.471 ±   0.098  ns/op
MemorySegmentVsBits.panamaNativeUnaligned          16  avgt   30      9.021 ±   0.148  ns/op
MemorySegmentVsBits.panamaNativeUnaligned          64  avgt   30     18.251 ±   0.471  ns/op
MemorySegmentVsBits.panamaNativeUnaligned         256  avgt   30     62.630 ±   1.119  ns/op
MemorySegmentVsBits.panamaNativeUnaligned         512  avgt   30    111.240 ±   1.386  ns/op
MemorySegmentVsBits.panamaNativeUnalignedBulk       1  avgt   30      4.434 ±   0.074  ns/op
MemorySegmentVsBits.panamaNativeUnalignedBulk       2  avgt   30      4.463 ±   0.089  ns/op
MemorySegmentVsBits.panamaNativeUnalignedBulk      16  avgt   30      5.200 ±   0.089  ns/op
MemorySegmentVsBits.panamaNativeUnalignedBulk      64  avgt   30      8.568 ±   0.371  ns/op
MemorySegmentVsBits.panamaNativeUnalignedBulk     256  avgt   30     22.682 ±   3.399  ns/op
MemorySegmentVsBits.panamaNativeUnalignedBulk     512  avgt   30     27.234 ±   0.458  ns/op
MemorySegmentVsBits.panamaNativeUnalignedBulk       1  avgt   30      4.415 ±   0.096  ns/op
MemorySegmentVsBits.panamaNativeUnalignedBulk       2  avgt   30      4.377 ±   0.056  ns/op
MemorySegmentVsBits.panamaNativeUnalignedBulk      16  avgt   30      5.044 ±   0.066  ns/op
MemorySegmentVsBits.panamaNativeUnalignedBulk      64  avgt   30      9.919 ±   0.894  ns/op
MemorySegmentVsBits.panamaNativeUnalignedBulk     256  avgt   30     21.985 ±   0.722  ns/op
MemorySegmentVsBits.panamaNativeUnalignedBulk     512  avgt   30     25.142 ±   1.577  ns/op

-------------

PR: https://git.openjdk.org/panama-foreign/pull/762


More information about the panama-dev mailing list