Interesting profile session

Robert Engels robaho at me.com
Mon Jun 24 22:03:50 UTC 2024


Hi all,

I am working on optimizing a web server design for virtual threads. The test essentially hits an endpoint and returns a string. As written, after sending the string it performs a flush() - most likely sending lots of very small tcp packets. The client from another machine uses concurrent overlapping connections.

It you look at the attached profile (captured with the Java async profiler), you can see that the vast majority of the time is spent in the scheduler - often waiting for work.

          ns  percent  samples  top
  ----------  -------  -------  ---
   927730000   17.50%    92773  write
   865420000   16.32%    86542  __psynch_cvwait
   664940000   12.54%    66494  kevent
   532900000   10.05%    53290  swtch_pri
   324830000    6.13%    32483  read
   221610000    4.18%    22161  __psynch_cvsignal
    98940000    1.87%     9894  java.util.concurrent.ForkJoinPool.awaitWork
    58630000    1.11%     5863  jdk.internal.misc.Unsafe.park

The read & write are expected but I was surprised at how much time is attributed to the scheduler.

With the virtual thread per task executor, this represented:

  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    14.63ms    5.36ms 239.72ms   97.28%
    Req/Sec     1.12k   140.56     5.07k    89.83%
Requests/sec:  71064.54
Transfer/sec:      9.62MB



If I configure the server with a pooled platform thread executor of 64 threads, I get:

  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     0.87ms    2.81ms 403.37ms   99.45%
    Req/Sec    12.95k     5.09k   24.13k    76.87%
Requests/sec:  77251.91
Transfer/sec:     10.46MB



The VT latency is a couple of orders of magnitude higher than the platform latency.

I suspect that what is happening is that the virtual threads are parking waiting for work too soon - or that the read & writes are always causing a context switch - regardless of if the call is very short (room in the kernel socket buffers).

Can you suggest any remedies? It feels like the scheduler needs some heuristics on average call time to determine and a spin loop to avoid this sort of thing.

 I have attached the VT and platform profiler data.



-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/loom-dev/attachments/20240624/26ea520d/attachment-0005.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: PastedGraphic-4.png
Type: image/png
Size: 3607 bytes
Desc: not available
URL: <https://mail.openjdk.org/pipermail/loom-dev/attachments/20240624/26ea520d/PastedGraphic-4-0001.png>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/loom-dev/attachments/20240624/26ea520d/attachment-0006.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: PastedGraphic-3.png
Type: image/png
Size: 6592 bytes
Desc: not available
URL: <https://mail.openjdk.org/pipermail/loom-dev/attachments/20240624/26ea520d/PastedGraphic-3-0001.png>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/loom-dev/attachments/20240624/26ea520d/attachment-0007.htm>
-------------- next part --------------
--- Execution profile ---
Total samples       : 530212
GC_active           : 16 (0.00%)
unknown_Java        : 7856 (1.48%)
skipped             : 22 (0.00%)

--- 543460000 ns (10.25%), 54346 samples
  [ 0] kevent
  [ 1] sun.nio.ch.KQueue.poll
  [ 2] sun.nio.ch.KQueuePoller.poll
  [ 3] sun.nio.ch.Poller.poll
  [ 4] sun.nio.ch.Poller.pollLoop
  [ 5] sun.nio.ch.Poller$$Lambda.0x00000001340f1b78.run
  [ 6] java.lang.Thread.runWith
  [ 7] java.lang.Thread.run
  [ 8] jdk.internal.misc.InnocuousThread.run

--- 532680000 ns (10.05%), 53268 samples
  [ 0] swtch_pri
  [ 1] java.lang.Thread.yield0
  [ 2] java.lang.Thread.yield
  [ 3] java.util.concurrent.LinkedTransferQueue.awaitMatch
  [ 4] java.util.concurrent.LinkedTransferQueue.xfer
  [ 5] java.util.concurrent.LinkedTransferQueue.take
  [ 6] sun.nio.ch.Poller.updateLoop
  [ 7] sun.nio.ch.Poller$$Lambda.0x00000001340f1fb8.run
  [ 8] java.lang.Thread.runWith
  [ 9] java.lang.Thread.run
  [10] jdk.internal.misc.InnocuousThread.run

--- 217460000 ns (4.10%), 21746 samples
  [ 0] write
  [ 1] sun.nio.ch.SocketDispatcher.write0
  [ 2] sun.nio.ch.SocketDispatcher.write
  [ 3] sun.nio.ch.NioSocketImpl.tryWrite
  [ 4] sun.nio.ch.NioSocketImpl.implWrite
  [ 5] sun.nio.ch.NioSocketImpl.write
  [ 6] sun.nio.ch.NioSocketImpl$2.write
  [ 7] java.net.Socket$SocketOutputStream.write
  [ 8] robaho.net.httpserver.HttpConnection$ActivityTimerOutputStream.write
  [ 9] java.io.BufferedOutputStream.flushBuffer
  [10] java.io.BufferedOutputStream.implFlush
  [11] java.io.BufferedOutputStream.flush
  [12] java.io.FilterOutputStream.flush
  [13] robaho.net.httpserver.FixedLengthOutputStream.close
  [14] robaho.net.httpserver.PlaceholderOutputStream.close
  [15] benchmarks.Server.lambda$createPlaintextHandler$0
  [16] benchmarks.Server$$Lambda.0x0000000134004ac0.handle
  [17] com.sun.net.httpserver.Filter$Chain.doFilter
  [18] robaho.net.httpserver.AuthFilter.doFilter
  [19] com.sun.net.httpserver.Filter$Chain.doFilter
  [20] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [21] com.sun.net.httpserver.Filter$Chain.doFilter
  [22] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [23] robaho.net.httpserver.ServerImpl$Exchange.run
  [24] jdk.internal.vm.Continuation.enterSpecial
  [25] jdk.internal.vm.Continuation.run
  [26] java.lang.VirtualThread.runContinuation
  [27] java.lang.VirtualThread$$Lambda.0x00000001340b44c0.run
  [28] java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec
  [29] java.util.concurrent.ForkJoinTask.doExec
  [30] java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec
  [31] java.util.concurrent.ForkJoinPool.scan
  [32] java.util.concurrent.ForkJoinPool.runWorker
  [33] java.util.concurrent.ForkJoinWorkerThread.run

--- 202940000 ns (3.83%), 20294 samples
  [ 0] write
  [ 1] sun.nio.ch.SocketDispatcher.write0
  [ 2] sun.nio.ch.SocketDispatcher.write
  [ 3] sun.nio.ch.NioSocketImpl.tryWrite
  [ 4] sun.nio.ch.NioSocketImpl.implWrite
  [ 5] sun.nio.ch.NioSocketImpl.write
  [ 6] sun.nio.ch.NioSocketImpl$2.write
  [ 7] java.net.Socket$SocketOutputStream.write
  [ 8] robaho.net.httpserver.HttpConnection$ActivityTimerOutputStream.write
  [ 9] java.io.BufferedOutputStream.flushBuffer
  [10] java.io.BufferedOutputStream.implFlush
  [11] java.io.BufferedOutputStream.flush
  [12] java.io.FilterOutputStream.flush
  [13] robaho.net.httpserver.FixedLengthOutputStream.close
  [14] robaho.net.httpserver.PlaceholderOutputStream.close
  [15] benchmarks.Server.lambda$createPlaintextHandler$0
  [16] benchmarks.Server$$Lambda.0x0000000134004ac0.handle
  [17] com.sun.net.httpserver.Filter$Chain.doFilter
  [18] robaho.net.httpserver.AuthFilter.doFilter
  [19] com.sun.net.httpserver.Filter$Chain.doFilter
  [20] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [21] com.sun.net.httpserver.Filter$Chain.doFilter
  [22] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [23] robaho.net.httpserver.ServerImpl$Exchange.run
  [24] jdk.internal.vm.Continuation.enterSpecial
  [25] jdk.internal.vm.Continuation.run
  [26] java.lang.VirtualThread.runContinuation
  [27] java.lang.VirtualThread$$Lambda.0x00000001340b44c0.run
  [28] java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec
  [29] java.util.concurrent.ForkJoinTask.doExec
  [30] java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec
  [31] java.util.concurrent.ForkJoinPool.scan
  [32] java.util.concurrent.ForkJoinPool.runWorker
  [33] java.util.concurrent.ForkJoinWorkerThread.run

--- 166830000 ns (3.15%), 16683 samples
  [ 0] __psynch_cvwait
  [ 1] Parker::park
  [ 2] Unsafe_Park
  [ 3] jdk.internal.misc.Unsafe.park
  [ 4] java.util.concurrent.locks.LockSupport.park
  [ 5] java.util.concurrent.LinkedTransferQueue$Node.block
  [ 6] java.util.concurrent.ForkJoinPool.unmanagedBlock
  [ 7] java.util.concurrent.ForkJoinPool.managedBlock
  [ 8] java.util.concurrent.LinkedTransferQueue.awaitMatch
  [ 9] java.util.concurrent.LinkedTransferQueue.xfer
  [10] java.util.concurrent.LinkedTransferQueue.take
  [11] sun.nio.ch.Poller.updateLoop
  [12] sun.nio.ch.Poller$$Lambda.0x00000001340f1fb8.run
  [13] java.lang.Thread.runWith
  [14] java.lang.Thread.run
  [15] jdk.internal.misc.InnocuousThread.run

--- 159630000 ns (3.01%), 15963 samples
  [ 0] __psynch_cvwait
  [ 1] Parker::park
  [ 2] Unsafe_Park
  [ 3] jdk.internal.misc.Unsafe.park
  [ 4] java.util.concurrent.locks.LockSupport.park
  [ 5] java.util.concurrent.ForkJoinPool.awaitWork
  [ 6] java.util.concurrent.ForkJoinPool.runWorker
  [ 7] java.util.concurrent.ForkJoinWorkerThread.run

--- 143430000 ns (2.71%), 14343 samples
  [ 0] __psynch_cvwait
  [ 1] Parker::park
  [ 2] Unsafe_Park
  [ 3] jdk.internal.misc.Unsafe.park
  [ 4] java.util.concurrent.locks.LockSupport.park
  [ 5] java.util.concurrent.ForkJoinPool.awaitWork
  [ 6] java.util.concurrent.ForkJoinPool.runWorker
  [ 7] java.util.concurrent.ForkJoinWorkerThread.run

--- 129370000 ns (2.44%), 12937 samples
  [ 0] write
  [ 1] sun.nio.ch.SocketDispatcher.write0
  [ 2] sun.nio.ch.SocketDispatcher.write
  [ 3] sun.nio.ch.NioSocketImpl.tryWrite
  [ 4] sun.nio.ch.NioSocketImpl.implWrite
  [ 5] sun.nio.ch.NioSocketImpl.write
  [ 6] sun.nio.ch.NioSocketImpl$2.write
  [ 7] java.net.Socket$SocketOutputStream.write
  [ 8] robaho.net.httpserver.HttpConnection$ActivityTimerOutputStream.write
  [ 9] java.io.BufferedOutputStream.flushBuffer
  [10] java.io.BufferedOutputStream.implFlush
  [11] java.io.BufferedOutputStream.flush
  [12] java.io.FilterOutputStream.flush
  [13] robaho.net.httpserver.FixedLengthOutputStream.close
  [14] robaho.net.httpserver.PlaceholderOutputStream.close
  [15] benchmarks.Server.lambda$createPlaintextHandler$0
  [16] benchmarks.Server$$Lambda.0x0000000134004ac0.handle
  [17] com.sun.net.httpserver.Filter$Chain.doFilter
  [18] robaho.net.httpserver.AuthFilter.doFilter
  [19] com.sun.net.httpserver.Filter$Chain.doFilter
  [20] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [21] com.sun.net.httpserver.Filter$Chain.doFilter
  [22] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [23] robaho.net.httpserver.ServerImpl$Exchange.run
  [24] jdk.internal.vm.Continuation.enterSpecial
  [25] jdk.internal.vm.Continuation.run
  [26] java.lang.VirtualThread.runContinuation
  [27] java.lang.VirtualThread$$Lambda.0x00000001340b44c0.run
  [28] java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec
  [29] java.util.concurrent.ForkJoinTask.doExec
  [30] java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec
  [31] java.util.concurrent.ForkJoinPool.scan
  [32] java.util.concurrent.ForkJoinPool.runWorker
  [33] java.util.concurrent.ForkJoinWorkerThread.run

--- 121470000 ns (2.29%), 12147 samples
  [ 0] kevent
  [ 1] sun.nio.ch.KQueue.register
  [ 2] sun.nio.ch.KQueuePoller.implRegister
  [ 3] sun.nio.ch.Poller.updateLoop
  [ 4] sun.nio.ch.Poller$$Lambda.0x00000001340f1fb8.run
  [ 5] java.lang.Thread.runWith
  [ 6] java.lang.Thread.run
  [ 7] jdk.internal.misc.InnocuousThread.run

--- 120730000 ns (2.28%), 12073 samples
  [ 0] write
  [ 1] sun.nio.ch.SocketDispatcher.write0
  [ 2] sun.nio.ch.SocketDispatcher.write
  [ 3] sun.nio.ch.NioSocketImpl.tryWrite
  [ 4] sun.nio.ch.NioSocketImpl.implWrite
  [ 5] sun.nio.ch.NioSocketImpl.write
  [ 6] sun.nio.ch.NioSocketImpl$2.write
  [ 7] java.net.Socket$SocketOutputStream.write
  [ 8] robaho.net.httpserver.HttpConnection$ActivityTimerOutputStream.write
  [ 9] java.io.BufferedOutputStream.flushBuffer
  [10] java.io.BufferedOutputStream.implFlush
  [11] java.io.BufferedOutputStream.flush
  [12] java.io.FilterOutputStream.flush
  [13] robaho.net.httpserver.FixedLengthOutputStream.close
  [14] robaho.net.httpserver.PlaceholderOutputStream.close
  [15] benchmarks.Server.lambda$createPlaintextHandler$0
  [16] benchmarks.Server$$Lambda.0x0000000134004ac0.handle
  [17] com.sun.net.httpserver.Filter$Chain.doFilter
  [18] robaho.net.httpserver.AuthFilter.doFilter
  [19] com.sun.net.httpserver.Filter$Chain.doFilter
  [20] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [21] com.sun.net.httpserver.Filter$Chain.doFilter
  [22] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [23] robaho.net.httpserver.ServerImpl$Exchange.run
  [24] jdk.internal.vm.Continuation.enterSpecial
  [25] jdk.internal.vm.Continuation.run
  [26] java.lang.VirtualThread.runContinuation
  [27] java.lang.VirtualThread$$Lambda.0x00000001340b44c0.run
  [28] java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec
  [29] java.util.concurrent.ForkJoinTask.doExec
  [30] java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec
  [31] java.util.concurrent.ForkJoinPool.scan
  [32] java.util.concurrent.ForkJoinPool.runWorker
  [33] java.util.concurrent.ForkJoinWorkerThread.run

--- 115960000 ns (2.19%), 11596 samples
  [ 0] write
  [ 1] sun.nio.ch.SocketDispatcher.write0
  [ 2] sun.nio.ch.SocketDispatcher.write
  [ 3] sun.nio.ch.NioSocketImpl.tryWrite
  [ 4] sun.nio.ch.NioSocketImpl.implWrite
  [ 5] sun.nio.ch.NioSocketImpl.write
  [ 6] sun.nio.ch.NioSocketImpl$2.write
  [ 7] java.net.Socket$SocketOutputStream.write
  [ 8] robaho.net.httpserver.HttpConnection$ActivityTimerOutputStream.write
  [ 9] java.io.BufferedOutputStream.flushBuffer
  [10] java.io.BufferedOutputStream.implFlush
  [11] java.io.BufferedOutputStream.flush
  [12] java.io.FilterOutputStream.flush
  [13] robaho.net.httpserver.FixedLengthOutputStream.close
  [14] robaho.net.httpserver.PlaceholderOutputStream.close
  [15] benchmarks.Server.lambda$createPlaintextHandler$0
  [16] benchmarks.Server$$Lambda.0x0000000134004ac0.handle
  [17] com.sun.net.httpserver.Filter$Chain.doFilter
  [18] robaho.net.httpserver.AuthFilter.doFilter
  [19] com.sun.net.httpserver.Filter$Chain.doFilter
  [20] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [21] com.sun.net.httpserver.Filter$Chain.doFilter
  [22] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [23] robaho.net.httpserver.ServerImpl$Exchange.run
  [24] jdk.internal.vm.Continuation.enterSpecial
  [25] jdk.internal.vm.Continuation.run
  [26] java.lang.VirtualThread.runContinuation
  [27] java.lang.VirtualThread$$Lambda.0x00000001340b44c0.run
  [28] java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec
  [29] java.util.concurrent.ForkJoinTask.doExec
  [30] java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec
  [31] java.util.concurrent.ForkJoinPool.scan
  [32] java.util.concurrent.ForkJoinPool.runWorker
  [33] java.util.concurrent.ForkJoinWorkerThread.run

--- 115070000 ns (2.17%), 11507 samples
  [ 0] write
  [ 1] sun.nio.ch.SocketDispatcher.write0
  [ 2] sun.nio.ch.SocketDispatcher.write
  [ 3] sun.nio.ch.NioSocketImpl.tryWrite
  [ 4] sun.nio.ch.NioSocketImpl.implWrite
  [ 5] sun.nio.ch.NioSocketImpl.write
  [ 6] sun.nio.ch.NioSocketImpl$2.write
  [ 7] java.net.Socket$SocketOutputStream.write
  [ 8] robaho.net.httpserver.HttpConnection$ActivityTimerOutputStream.write
  [ 9] java.io.BufferedOutputStream.flushBuffer
  [10] java.io.BufferedOutputStream.implFlush
  [11] java.io.BufferedOutputStream.flush
  [12] java.io.FilterOutputStream.flush
  [13] robaho.net.httpserver.FixedLengthOutputStream.close
  [14] robaho.net.httpserver.PlaceholderOutputStream.close
  [15] benchmarks.Server.lambda$createPlaintextHandler$0
  [16] benchmarks.Server$$Lambda.0x0000000134004ac0.handle
  [17] com.sun.net.httpserver.Filter$Chain.doFilter
  [18] robaho.net.httpserver.AuthFilter.doFilter
  [19] com.sun.net.httpserver.Filter$Chain.doFilter
  [20] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [21] com.sun.net.httpserver.Filter$Chain.doFilter
  [22] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [23] robaho.net.httpserver.ServerImpl$Exchange.run
  [24] jdk.internal.vm.Continuation.enterSpecial
  [25] jdk.internal.vm.Continuation.run
  [26] java.lang.VirtualThread.runContinuation
  [27] java.lang.VirtualThread$$Lambda.0x00000001340b44c0.run
  [28] java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec
  [29] java.util.concurrent.ForkJoinTask.doExec
  [30] java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec
  [31] java.util.concurrent.ForkJoinPool.scan
  [32] java.util.concurrent.ForkJoinPool.runWorker
  [33] java.util.concurrent.ForkJoinWorkerThread.run

--- 99040000 ns (1.87%), 9904 samples
  [ 0] __psynch_cvwait
  [ 1] Parker::park
  [ 2] Unsafe_Park
  [ 3] jdk.internal.misc.Unsafe.park
  [ 4] java.util.concurrent.locks.LockSupport.park
  [ 5] java.util.concurrent.ForkJoinPool.awaitWork
  [ 6] java.util.concurrent.ForkJoinPool.runWorker
  [ 7] java.util.concurrent.ForkJoinWorkerThread.run

--- 97110000 ns (1.83%), 9711 samples
  [ 0] __psynch_cvwait
  [ 1] Parker::park
  [ 2] Unsafe_Park
  [ 3] jdk.internal.misc.Unsafe.park
  [ 4] java.util.concurrent.locks.LockSupport.park
  [ 5] java.util.concurrent.ForkJoinPool.awaitWork
  [ 6] java.util.concurrent.ForkJoinPool.runWorker
  [ 7] java.util.concurrent.ForkJoinWorkerThread.run

--- 96660000 ns (1.82%), 9666 samples
  [ 0] __psynch_cvsignal
  [ 1] Unsafe_Unpark
  [ 2] jdk.internal.misc.Unsafe.unpark
  [ 3] java.util.concurrent.locks.LockSupport.unpark
  [ 4] java.util.concurrent.ForkJoinPool.signalWork
  [ 5] java.util.concurrent.ForkJoinPool$WorkQueue.push
  [ 6] java.util.concurrent.ForkJoinPool.poolSubmit
  [ 7] java.util.concurrent.ForkJoinPool.execute
  [ 8] java.lang.VirtualThread.submitRunContinuation
  [ 9] java.lang.VirtualThread.unpark
  [10] java.lang.System$2.unparkVirtualThread
  [11] jdk.internal.misc.VirtualThreads.unpark
  [12] java.util.concurrent.locks.LockSupport.unpark
  [13] sun.nio.ch.Poller.wakeup
  [14] sun.nio.ch.Poller.polled
  [15] sun.nio.ch.KQueuePoller.poll
  [16] sun.nio.ch.Poller.poll
  [17] sun.nio.ch.Poller.pollLoop
  [18] sun.nio.ch.Poller$$Lambda.0x00000001340f1b78.run
  [19] java.lang.Thread.runWith
  [20] java.lang.Thread.run
  [21] jdk.internal.misc.InnocuousThread.run

--- 77830000 ns (1.47%), 7783 samples
  [ 0] __psynch_cvwait
  [ 1] Parker::park
  [ 2] Unsafe_Park
  [ 3] jdk.internal.misc.Unsafe.park
  [ 4] java.util.concurrent.locks.LockSupport.park
  [ 5] java.util.concurrent.ForkJoinPool.awaitWork
  [ 6] java.util.concurrent.ForkJoinPool.runWorker
  [ 7] java.util.concurrent.ForkJoinWorkerThread.run

--- 77300000 ns (1.46%), 7730 samples
  [ 0] __psynch_cvwait
  [ 1] Parker::park
  [ 2] Unsafe_Park
  [ 3] jdk.internal.misc.Unsafe.park
  [ 4] java.util.concurrent.locks.LockSupport.park
  [ 5] java.util.concurrent.ForkJoinPool.awaitWork
  [ 6] java.util.concurrent.ForkJoinPool.runWorker
  [ 7] java.util.concurrent.ForkJoinWorkerThread.run

--- 59200000 ns (1.12%), 5920 samples
  [ 0] read
  [ 1] sun.nio.ch.SocketDispatcher.read0
  [ 2] sun.nio.ch.SocketDispatcher.read
  [ 3] sun.nio.ch.NioSocketImpl.tryRead
  [ 4] sun.nio.ch.NioSocketImpl.implRead
  [ 5] sun.nio.ch.NioSocketImpl.read
  [ 6] sun.nio.ch.NioSocketImpl$1.read
  [ 7] java.net.Socket$SocketInputStream.read
  [ 8] java.io.FilterInputStream.read
  [ 9] robaho.net.httpserver.HttpConnection$ActivityTimerInputStream.read
  [10] robaho.net.httpserver.NoSyncBufferedInputStream.fill
  [11] robaho.net.httpserver.NoSyncBufferedInputStream.read
  [12] robaho.net.httpserver.Request.readLine
  [13] robaho.net.httpserver.Request.<init>
  [14] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [15] robaho.net.httpserver.ServerImpl$Exchange.run
  [16] jdk.internal.vm.Continuation.enterSpecial
  [17] jdk.internal.vm.Continuation.run
  [18] java.lang.VirtualThread.runContinuation
  [19] java.lang.VirtualThread$$Lambda.0x00000001340b44c0.run
  [20] java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec
  [21] java.util.concurrent.ForkJoinTask.doExec
  [22] java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec
  [23] java.util.concurrent.ForkJoinPool.scan
  [24] java.util.concurrent.ForkJoinPool.runWorker
  [25] java.util.concurrent.ForkJoinWorkerThread.run

--- 50520000 ns (0.95%), 5052 samples
  [ 0] read
  [ 1] sun.nio.ch.SocketDispatcher.read0
  [ 2] sun.nio.ch.SocketDispatcher.read
  [ 3] sun.nio.ch.NioSocketImpl.tryRead
  [ 4] sun.nio.ch.NioSocketImpl.implRead
  [ 5] sun.nio.ch.NioSocketImpl.read
  [ 6] sun.nio.ch.NioSocketImpl$1.read
  [ 7] java.net.Socket$SocketInputStream.read
  [ 8] java.io.FilterInputStream.read
  [ 9] robaho.net.httpserver.HttpConnection$ActivityTimerInputStream.read
  [10] robaho.net.httpserver.NoSyncBufferedInputStream.fill
  [11] robaho.net.httpserver.NoSyncBufferedInputStream.read
  [12] robaho.net.httpserver.Request.readLine
  [13] robaho.net.httpserver.Request.<init>
  [14] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [15] robaho.net.httpserver.ServerImpl$Exchange.run
  [16] jdk.internal.vm.Continuation.enterSpecial
  [17] jdk.internal.vm.Continuation.run
  [18] java.lang.VirtualThread.runContinuation
  [19] java.lang.VirtualThread$$Lambda.0x00000001340b44c0.run
  [20] java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec
  [21] java.util.concurrent.ForkJoinTask.doExec
  [22] java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec
  [23] java.util.concurrent.ForkJoinPool.scan
  [24] java.util.concurrent.ForkJoinPool.runWorker
  [25] java.util.concurrent.ForkJoinWorkerThread.run

--- 39240000 ns (0.74%), 3924 samples
  [ 0] sun.nio.ch.KQueue.poll
  [ 1] sun.nio.ch.KQueuePoller.poll
  [ 2] sun.nio.ch.Poller.poll
  [ 3] sun.nio.ch.Poller.pollLoop
  [ 4] sun.nio.ch.Poller$$Lambda.0x00000001340f1b78.run
  [ 5] java.lang.Thread.runWith
  [ 6] java.lang.Thread.run
  [ 7] jdk.internal.misc.InnocuousThread.run

--- 38970000 ns (0.74%), 3897 samples
  [ 0] java.util.concurrent.ForkJoinPool.awaitWork
  [ 1] java.util.concurrent.ForkJoinPool.runWorker
  [ 2] java.util.concurrent.ForkJoinWorkerThread.run

--- 32670000 ns (0.62%), 3267 samples
  [ 0] read
  [ 1] sun.nio.ch.SocketDispatcher.read0
  [ 2] sun.nio.ch.SocketDispatcher.read
  [ 3] sun.nio.ch.NioSocketImpl.tryRead
  [ 4] sun.nio.ch.NioSocketImpl.implRead
  [ 5] sun.nio.ch.NioSocketImpl.read
  [ 6] sun.nio.ch.NioSocketImpl$1.read
  [ 7] java.net.Socket$SocketInputStream.read
  [ 8] java.io.FilterInputStream.read
  [ 9] robaho.net.httpserver.HttpConnection$ActivityTimerInputStream.read
  [10] robaho.net.httpserver.NoSyncBufferedInputStream.fill
  [11] robaho.net.httpserver.NoSyncBufferedInputStream.read
  [12] robaho.net.httpserver.Request.readLine
  [13] robaho.net.httpserver.Request.<init>
  [14] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [15] robaho.net.httpserver.ServerImpl$Exchange.run
  [16] jdk.internal.vm.Continuation.enterSpecial
  [17] jdk.internal.vm.Continuation.run
  [18] java.lang.VirtualThread.runContinuation
  [19] java.lang.VirtualThread$$Lambda.0x00000001340b44c0.run
  [20] java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec
  [21] java.util.concurrent.ForkJoinTask.doExec
  [22] java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec
  [23] java.util.concurrent.ForkJoinPool.scan
  [24] java.util.concurrent.ForkJoinPool.runWorker
  [25] java.util.concurrent.ForkJoinWorkerThread.run

--- 31960000 ns (0.60%), 3196 samples
  [ 0] read
  [ 1] sun.nio.ch.SocketDispatcher.read0
  [ 2] sun.nio.ch.SocketDispatcher.read
  [ 3] sun.nio.ch.NioSocketImpl.tryRead
  [ 4] sun.nio.ch.NioSocketImpl.implRead
  [ 5] sun.nio.ch.NioSocketImpl.read
  [ 6] sun.nio.ch.NioSocketImpl$1.read
  [ 7] java.net.Socket$SocketInputStream.read
  [ 8] java.io.FilterInputStream.read
  [ 9] robaho.net.httpserver.HttpConnection$ActivityTimerInputStream.read
  [10] robaho.net.httpserver.NoSyncBufferedInputStream.fill
  [11] robaho.net.httpserver.NoSyncBufferedInputStream.read
  [12] robaho.net.httpserver.Request.readLine
  [13] robaho.net.httpserver.Request.<init>
  [14] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [15] robaho.net.httpserver.ServerImpl$Exchange.run
  [16] jdk.internal.vm.Continuation.enterSpecial
  [17] jdk.internal.vm.Continuation.run
  [18] java.lang.VirtualThread.runContinuation
  [19] java.lang.VirtualThread$$Lambda.0x00000001340b44c0.run
  [20] java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec
  [21] java.util.concurrent.ForkJoinTask.doExec
  [22] java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec
  [23] java.util.concurrent.ForkJoinPool.scan
  [24] java.util.concurrent.ForkJoinPool.runWorker
  [25] java.util.concurrent.ForkJoinWorkerThread.run

--- 31320000 ns (0.59%), 3132 samples
  [ 0] read
  [ 1] sun.nio.ch.SocketDispatcher.read0
  [ 2] sun.nio.ch.SocketDispatcher.read
  [ 3] sun.nio.ch.NioSocketImpl.tryRead
  [ 4] sun.nio.ch.NioSocketImpl.implRead
  [ 5] sun.nio.ch.NioSocketImpl.read
  [ 6] sun.nio.ch.NioSocketImpl$1.read
  [ 7] java.net.Socket$SocketInputStream.read
  [ 8] java.io.FilterInputStream.read
  [ 9] robaho.net.httpserver.HttpConnection$ActivityTimerInputStream.read
  [10] robaho.net.httpserver.NoSyncBufferedInputStream.fill
  [11] robaho.net.httpserver.NoSyncBufferedInputStream.read
  [12] robaho.net.httpserver.Request.readLine
  [13] robaho.net.httpserver.Request.<init>
  [14] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [15] robaho.net.httpserver.ServerImpl$Exchange.run
  [16] jdk.internal.vm.Continuation.enterSpecial
  [17] jdk.internal.vm.Continuation.run
  [18] java.lang.VirtualThread.runContinuation
  [19] java.lang.VirtualThread$$Lambda.0x00000001340b44c0.run
  [20] java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec
  [21] java.util.concurrent.ForkJoinTask.doExec
  [22] java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec
  [23] java.util.concurrent.ForkJoinPool.scan
  [24] java.util.concurrent.ForkJoinPool.runWorker
  [25] java.util.concurrent.ForkJoinWorkerThread.run

--- 28890000 ns (0.54%), 2889 samples
  [ 0] read
  [ 1] sun.nio.ch.SocketDispatcher.read0
  [ 2] sun.nio.ch.SocketDispatcher.read
  [ 3] sun.nio.ch.NioSocketImpl.tryRead
  [ 4] sun.nio.ch.NioSocketImpl.implRead
  [ 5] sun.nio.ch.NioSocketImpl.read
  [ 6] sun.nio.ch.NioSocketImpl$1.read
  [ 7] java.net.Socket$SocketInputStream.read
  [ 8] java.io.FilterInputStream.read
  [ 9] robaho.net.httpserver.HttpConnection$ActivityTimerInputStream.read
  [10] robaho.net.httpserver.NoSyncBufferedInputStream.fill
  [11] robaho.net.httpserver.NoSyncBufferedInputStream.read
  [12] robaho.net.httpserver.Request.readLine
  [13] robaho.net.httpserver.Request.<init>
  [14] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [15] robaho.net.httpserver.ServerImpl$Exchange.run
  [16] jdk.internal.vm.Continuation.enterSpecial
  [17] jdk.internal.vm.Continuation.run
  [18] java.lang.VirtualThread.runContinuation
  [19] java.lang.VirtualThread$$Lambda.0x00000001340b44c0.run
  [20] java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec
  [21] java.util.concurrent.ForkJoinTask.doExec
  [22] java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec
  [23] java.util.concurrent.ForkJoinPool.scan
  [24] java.util.concurrent.ForkJoinPool.runWorker
  [25] java.util.concurrent.ForkJoinWorkerThread.run

--- 22570000 ns (0.43%), 2257 samples
  [ 0] __psynch_cvsignal
  [ 1] Unsafe_Unpark
  [ 2] jdk.internal.misc.Unsafe.unpark
  [ 3] java.util.concurrent.locks.LockSupport.unpark
  [ 4] java.util.concurrent.ForkJoinPool.signalWork
  [ 5] java.util.concurrent.ForkJoinPool.scan
  [ 6] java.util.concurrent.ForkJoinPool.runWorker
  [ 7] java.util.concurrent.ForkJoinWorkerThread.run

--- 21060000 ns (0.40%), 2106 samples
  [ 0] jdk.internal.misc.Unsafe.park
  [ 1] java.util.concurrent.locks.LockSupport.park
  [ 2] java.util.concurrent.ForkJoinPool.awaitWork
  [ 3] java.util.concurrent.ForkJoinPool.runWorker
  [ 4] java.util.concurrent.ForkJoinWorkerThread.run

--- 20710000 ns (0.39%), 2071 samples
  [ 0] read
  [ 1] sun.nio.ch.SocketDispatcher.read0
  [ 2] sun.nio.ch.SocketDispatcher.read
  [ 3] sun.nio.ch.NioSocketImpl.tryRead
  [ 4] sun.nio.ch.NioSocketImpl.implRead
  [ 5] sun.nio.ch.NioSocketImpl.read
  [ 6] sun.nio.ch.NioSocketImpl$1.read
  [ 7] java.net.Socket$SocketInputStream.read
  [ 8] java.io.FilterInputStream.read
  [ 9] robaho.net.httpserver.HttpConnection$ActivityTimerInputStream.read
  [10] robaho.net.httpserver.NoSyncBufferedInputStream.fill
  [11] robaho.net.httpserver.NoSyncBufferedInputStream.read
  [12] robaho.net.httpserver.Request.readLine
  [13] robaho.net.httpserver.Request.<init>
  [14] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [15] robaho.net.httpserver.ServerImpl$Exchange.run
  [16] jdk.internal.vm.Continuation.enterSpecial
  [17] jdk.internal.vm.Continuation.run
  [18] java.lang.VirtualThread.runContinuation
  [19] java.lang.VirtualThread$$Lambda.0x00000001340b44c0.run
  [20] java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec
  [21] java.util.concurrent.ForkJoinTask.doExec
  [22] java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec
  [23] java.util.concurrent.ForkJoinPool.scan
  [24] java.util.concurrent.ForkJoinPool.runWorker
  [25] java.util.concurrent.ForkJoinWorkerThread.run

--- 19720000 ns (0.37%), 1972 samples
  [ 0] read
  [ 1] sun.nio.ch.SocketDispatcher.read0
  [ 2] sun.nio.ch.SocketDispatcher.read
  [ 3] sun.nio.ch.NioSocketImpl.tryRead
  [ 4] sun.nio.ch.NioSocketImpl.implRead
  [ 5] sun.nio.ch.NioSocketImpl.read
  [ 6] sun.nio.ch.NioSocketImpl$1.read
  [ 7] java.net.Socket$SocketInputStream.read
  [ 8] java.io.FilterInputStream.read
  [ 9] robaho.net.httpserver.HttpConnection$ActivityTimerInputStream.read
  [10] robaho.net.httpserver.NoSyncBufferedInputStream.fill
  [11] robaho.net.httpserver.NoSyncBufferedInputStream.read
  [12] robaho.net.httpserver.Request.readLine
  [13] robaho.net.httpserver.Request.<init>
  [14] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [15] robaho.net.httpserver.ServerImpl$Exchange.run
  [16] jdk.internal.vm.Continuation.enterSpecial
  [17] jdk.internal.vm.Continuation.run
  [18] java.lang.VirtualThread.runContinuation
  [19] java.lang.VirtualThread$$Lambda.0x00000001340b44c0.run
  [20] java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec
  [21] java.util.concurrent.ForkJoinTask.doExec
  [22] java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec
  [23] java.util.concurrent.ForkJoinPool.scan
  [24] java.util.concurrent.ForkJoinPool.runWorker
  [25] java.util.concurrent.ForkJoinWorkerThread.run

--- 18860000 ns (0.36%), 1886 samples
  [ 0] __psynch_cvsignal
  [ 1] Unsafe_Unpark
  [ 2] jdk.internal.misc.Unsafe.unpark
  [ 3] java.util.concurrent.locks.LockSupport.unpark
  [ 4] java.util.concurrent.ForkJoinPool.signalWork
  [ 5] java.util.concurrent.ForkJoinPool.scan
  [ 6] java.util.concurrent.ForkJoinPool.runWorker
  [ 7] java.util.concurrent.ForkJoinWorkerThread.run

--- 15280000 ns (0.29%), 1528 samples
  [ 0] java.lang.Thread.yield0
  [ 1] java.lang.Thread.yield
  [ 2] java.util.concurrent.LinkedTransferQueue.awaitMatch
  [ 3] java.util.concurrent.LinkedTransferQueue.xfer
  [ 4] java.util.concurrent.LinkedTransferQueue.take
  [ 5] sun.nio.ch.Poller.updateLoop
  [ 6] sun.nio.ch.Poller$$Lambda.0x00000001340f1fb8.run
  [ 7] java.lang.Thread.runWith
  [ 8] java.lang.Thread.run
  [ 9] jdk.internal.misc.InnocuousThread.run

--- 13490000 ns (0.25%), 1349 samples
  [ 0] java.util.concurrent.ForkJoinPool.awaitWork
  [ 1] java.util.concurrent.ForkJoinPool.runWorker
  [ 2] java.util.concurrent.ForkJoinWorkerThread.run

--- 13050000 ns (0.25%), 1305 samples
  [ 0] __psynch_cvsignal
  [ 1] Unsafe_Unpark
  [ 2] jdk.internal.misc.Unsafe.unpark
  [ 3] java.util.concurrent.locks.LockSupport.unpark
  [ 4] java.util.concurrent.ForkJoinPool.signalWork
  [ 5] java.util.concurrent.ForkJoinPool.scan
  [ 6] java.util.concurrent.ForkJoinPool.runWorker
  [ 7] java.util.concurrent.ForkJoinWorkerThread.run

--- 12910000 ns (0.24%), 1291 samples
  [ 0] java.util.concurrent.ForkJoinPool.awaitWork
  [ 1] java.util.concurrent.ForkJoinPool.runWorker
  [ 2] java.util.concurrent.ForkJoinWorkerThread.run

--- 12660000 ns (0.24%), 1266 samples
  [ 0] sun.nio.ch.Poller.wakeup
  [ 1] sun.nio.ch.Poller.polled
  [ 2] sun.nio.ch.KQueuePoller.poll
  [ 3] sun.nio.ch.Poller.poll
  [ 4] sun.nio.ch.Poller.pollLoop
  [ 5] sun.nio.ch.Poller$$Lambda.0x00000001340f1b78.run
  [ 6] java.lang.Thread.runWith
  [ 7] java.lang.Thread.run
  [ 8] jdk.internal.misc.InnocuousThread.run

--- 12430000 ns (0.23%), 1243 samples
  [ 0] __psynch_cvsignal
  [ 1] Unsafe_Unpark
  [ 2] jdk.internal.misc.Unsafe.unpark
  [ 3] java.util.concurrent.locks.LockSupport.unpark
  [ 4] java.util.concurrent.ForkJoinPool.signalWork
  [ 5] java.util.concurrent.ForkJoinPool.scan
  [ 6] java.util.concurrent.ForkJoinPool.runWorker
  [ 7] java.util.concurrent.ForkJoinWorkerThread.run

--- 11820000 ns (0.22%), 1182 samples
  [ 0] __psynch_cvsignal
  [ 1] Unsafe_Unpark
  [ 2] jdk.internal.misc.Unsafe.unpark
  [ 3] java.util.concurrent.locks.LockSupport.unpark
  [ 4] java.util.concurrent.ForkJoinPool.signalWork
  [ 5] java.util.concurrent.ForkJoinPool.scan
  [ 6] java.util.concurrent.ForkJoinPool.runWorker
  [ 7] java.util.concurrent.ForkJoinWorkerThread.run

--- 11540000 ns (0.22%), 1154 samples
  [ 0] read
  [ 1] sun.nio.ch.SocketDispatcher.read0
  [ 2] sun.nio.ch.SocketDispatcher.read
  [ 3] sun.nio.ch.NioSocketImpl.tryRead
  [ 4] sun.nio.ch.NioSocketImpl.implRead
  [ 5] sun.nio.ch.NioSocketImpl.read
  [ 6] sun.nio.ch.NioSocketImpl$1.read
  [ 7] java.net.Socket$SocketInputStream.read
  [ 8] java.io.FilterInputStream.read
  [ 9] robaho.net.httpserver.HttpConnection$ActivityTimerInputStream.read
  [10] robaho.net.httpserver.NoSyncBufferedInputStream.fill
  [11] robaho.net.httpserver.NoSyncBufferedInputStream.read
  [12] robaho.net.httpserver.Request.readLine
  [13] robaho.net.httpserver.Request.<init>
  [14] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [15] robaho.net.httpserver.ServerImpl$Exchange.run
  [16] jdk.internal.vm.Continuation.enterSpecial
  [17] jdk.internal.vm.Continuation.run
  [18] java.lang.VirtualThread.runContinuation
  [19] java.lang.VirtualThread$$Lambda.0x00000001340b44c0.run
  [20] java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec
  [21] java.util.concurrent.ForkJoinTask.doExec
  [22] java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec
  [23] java.util.concurrent.ForkJoinPool.scan
  [24] java.util.concurrent.ForkJoinPool.runWorker
  [25] java.util.concurrent.ForkJoinWorkerThread.run

--- 11220000 ns (0.21%), 1122 samples
  [ 0] __psynch_cvwait
  [ 1] Parker::park
  [ 2] Unsafe_Park
  [ 3] jdk.internal.misc.Unsafe.park
  [ 4] java.util.concurrent.locks.LockSupport.parkUntil
  [ 5] java.util.concurrent.ForkJoinPool.awaitWork
  [ 6] java.util.concurrent.ForkJoinPool.runWorker
  [ 7] java.util.concurrent.ForkJoinWorkerThread.run

--- 10880000 ns (0.21%), 1088 samples
  [ 0] read
  [ 1] sun.nio.ch.SocketDispatcher.read0
  [ 2] sun.nio.ch.SocketDispatcher.read
  [ 3] sun.nio.ch.NioSocketImpl.tryRead
  [ 4] sun.nio.ch.NioSocketImpl.implRead
  [ 5] sun.nio.ch.NioSocketImpl.read
  [ 6] sun.nio.ch.NioSocketImpl$1.read
  [ 7] java.net.Socket$SocketInputStream.read
  [ 8] java.io.FilterInputStream.read
  [ 9] robaho.net.httpserver.HttpConnection$ActivityTimerInputStream.read
  [10] robaho.net.httpserver.NoSyncBufferedInputStream.fill
  [11] robaho.net.httpserver.NoSyncBufferedInputStream.read
  [12] robaho.net.httpserver.Request.readLine
  [13] robaho.net.httpserver.Request.<init>
  [14] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [15] robaho.net.httpserver.ServerImpl$Exchange.run
  [16] jdk.internal.vm.Continuation.enterSpecial
  [17] jdk.internal.vm.Continuation.run
  [18] java.lang.VirtualThread.runContinuation
  [19] java.lang.VirtualThread$$Lambda.0x00000001340b44c0.run
  [20] java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec
  [21] java.util.concurrent.ForkJoinTask.doExec
  [22] java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec
  [23] java.util.concurrent.ForkJoinPool.scan
  [24] java.util.concurrent.ForkJoinPool.runWorker
  [25] java.util.concurrent.ForkJoinWorkerThread.run

--- 10750000 ns (0.20%), 1075 samples
  [ 0] read
  [ 1] sun.nio.ch.SocketDispatcher.read0
  [ 2] sun.nio.ch.SocketDispatcher.read
  [ 3] sun.nio.ch.NioSocketImpl.tryRead
  [ 4] sun.nio.ch.NioSocketImpl.implRead
  [ 5] sun.nio.ch.NioSocketImpl.read
  [ 6] sun.nio.ch.NioSocketImpl$1.read
  [ 7] java.net.Socket$SocketInputStream.read
  [ 8] java.io.FilterInputStream.read
  [ 9] robaho.net.httpserver.HttpConnection$ActivityTimerInputStream.read
  [10] robaho.net.httpserver.NoSyncBufferedInputStream.fill
  [11] robaho.net.httpserver.NoSyncBufferedInputStream.read
  [12] robaho.net.httpserver.Request.readLine
  [13] robaho.net.httpserver.Request.<init>
  [14] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [15] robaho.net.httpserver.ServerImpl$Exchange.run
  [16] jdk.internal.vm.Continuation.enterSpecial
  [17] jdk.internal.vm.Continuation.run
  [18] java.lang.VirtualThread.runContinuation
  [19] java.lang.VirtualThread$$Lambda.0x00000001340b44c0.run
  [20] java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec
  [21] java.util.concurrent.ForkJoinTask.doExec
  [22] java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec
  [23] java.util.concurrent.ForkJoinPool.scan
  [24] java.util.concurrent.ForkJoinPool.runWorker
  [25] java.util.concurrent.ForkJoinWorkerThread.run

--- 10730000 ns (0.20%), 1073 samples
  [ 0] java.util.concurrent.ConcurrentHashMap.tabAt
  [ 1] java.util.concurrent.ConcurrentHashMap.replaceNode
  [ 2] java.util.concurrent.ConcurrentHashMap.remove
  [ 3] sun.nio.ch.Poller.wakeup
  [ 4] sun.nio.ch.Poller.polled
  [ 5] sun.nio.ch.KQueuePoller.poll
  [ 6] sun.nio.ch.Poller.poll
  [ 7] sun.nio.ch.Poller.pollLoop
  [ 8] sun.nio.ch.Poller$$Lambda.0x00000001340f1b78.run
  [ 9] java.lang.Thread.runWith
  [10] java.lang.Thread.run
  [11] jdk.internal.misc.InnocuousThread.run

--- 10210000 ns (0.19%), 1021 samples
  [ 0] read
  [ 1] sun.nio.ch.SocketDispatcher.read0
  [ 2] sun.nio.ch.SocketDispatcher.read
  [ 3] sun.nio.ch.NioSocketImpl.tryRead
  [ 4] sun.nio.ch.NioSocketImpl.implRead
  [ 5] sun.nio.ch.NioSocketImpl.read
  [ 6] sun.nio.ch.NioSocketImpl$1.read
  [ 7] java.net.Socket$SocketInputStream.read
  [ 8] java.io.FilterInputStream.read
  [ 9] robaho.net.httpserver.HttpConnection$ActivityTimerInputStream.read
  [10] robaho.net.httpserver.NoSyncBufferedInputStream.fill
  [11] robaho.net.httpserver.NoSyncBufferedInputStream.read
  [12] robaho.net.httpserver.Request.readLine
  [13] robaho.net.httpserver.Request.<init>
  [14] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [15] robaho.net.httpserver.ServerImpl$Exchange.run
  [16] jdk.internal.vm.Continuation.enterSpecial
  [17] jdk.internal.vm.Continuation.run
  [18] java.lang.VirtualThread.runContinuation
  [19] java.lang.VirtualThread$$Lambda.0x00000001340b44c0.run
  [20] java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec
  [21] java.util.concurrent.ForkJoinTask.doExec
  [22] java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec
  [23] java.util.concurrent.ForkJoinPool.scan
  [24] java.util.concurrent.ForkJoinPool.runWorker
  [25] java.util.concurrent.ForkJoinWorkerThread.run

--- 10200000 ns (0.19%), 1020 samples
  [ 0] __psynch_cvsignal
  [ 1] Unsafe_Unpark
  [ 2] jdk.internal.misc.Unsafe.unpark
  [ 3] java.util.concurrent.locks.LockSupport.unpark
  [ 4] java.util.concurrent.LinkedTransferQueue$Node.tryMatch
  [ 5] java.util.concurrent.LinkedTransferQueue.xfer
  [ 6] java.util.concurrent.LinkedTransferQueue.add
  [ 7] sun.nio.ch.Poller.registerAsync
  [ 8] sun.nio.ch.Poller.pollIndirect
  [ 9] sun.nio.ch.Poller.poll
  [10] sun.nio.ch.Poller.poll
  [11] sun.nio.ch.NioSocketImpl.park
  [12] sun.nio.ch.NioSocketImpl.park
  [13] sun.nio.ch.NioSocketImpl.implRead
  [14] sun.nio.ch.NioSocketImpl.read
  [15] sun.nio.ch.NioSocketImpl$1.read
  [16] java.net.Socket$SocketInputStream.read
  [17] java.io.FilterInputStream.read
  [18] robaho.net.httpserver.HttpConnection$ActivityTimerInputStream.read
  [19] robaho.net.httpserver.NoSyncBufferedInputStream.fill
  [20] robaho.net.httpserver.NoSyncBufferedInputStream.read
  [21] robaho.net.httpserver.Request.readLine
  [22] robaho.net.httpserver.Request.<init>
  [23] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [24] robaho.net.httpserver.ServerImpl$Exchange.run
  [25] jdk.internal.vm.Continuation.enterSpecial
  [26] jdk.internal.vm.Continuation.run
  [27] java.lang.VirtualThread.runContinuation
  [28] java.lang.VirtualThread$$Lambda.0x00000001340b44c0.run
  [29] java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec
  [30] java.util.concurrent.ForkJoinTask.doExec
  [31] java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec
  [32] java.util.concurrent.ForkJoinPool.scan
  [33] java.util.concurrent.ForkJoinPool.runWorker
  [34] java.util.concurrent.ForkJoinWorkerThread.run

--- 9630000 ns (0.18%), 963 samples
  [ 0] jdk.internal.misc.Unsafe.park
  [ 1] java.util.concurrent.locks.LockSupport.park
  [ 2] java.util.concurrent.LinkedTransferQueue$Node.block
  [ 3] java.util.concurrent.ForkJoinPool.unmanagedBlock
  [ 4] java.util.concurrent.ForkJoinPool.managedBlock
  [ 5] java.util.concurrent.LinkedTransferQueue.awaitMatch
  [ 6] java.util.concurrent.LinkedTransferQueue.xfer
  [ 7] java.util.concurrent.LinkedTransferQueue.take
  [ 8] sun.nio.ch.Poller.updateLoop
  [ 9] sun.nio.ch.Poller$$Lambda.0x00000001340f1fb8.run
  [10] java.lang.Thread.runWith
  [11] java.lang.Thread.run
  [12] jdk.internal.misc.InnocuousThread.run

--- 9470000 ns (0.18%), 947 samples
  [ 0] __psynch_cvsignal
  [ 1] Unsafe_Unpark
  [ 2] jdk.internal.misc.Unsafe.unpark
  [ 3] java.util.concurrent.locks.LockSupport.unpark
  [ 4] java.util.concurrent.ForkJoinPool.signalWork
  [ 5] java.util.concurrent.ForkJoinPool.scan
  [ 6] java.util.concurrent.ForkJoinPool.runWorker
  [ 7] java.util.concurrent.ForkJoinWorkerThread.run

--- 9300000 ns (0.18%), 930 samples
  [ 0] __psynch_cvwait
  [ 1] Parker::park
  [ 2] Unsafe_Park
  [ 3] jdk.internal.misc.Unsafe.park
  [ 4] java.util.concurrent.locks.LockSupport.parkUntil
  [ 5] java.util.concurrent.ForkJoinPool.awaitWork
  [ 6] java.util.concurrent.ForkJoinPool.runWorker
  [ 7] java.util.concurrent.ForkJoinWorkerThread.run

--- 9180000 ns (0.17%), 918 samples
  [ 0] java.lang.VirtualThread.unpark
  [ 1] java.lang.System$2.unparkVirtualThread
  [ 2] jdk.internal.misc.VirtualThreads.unpark
  [ 3] java.util.concurrent.locks.LockSupport.unpark
  [ 4] sun.nio.ch.Poller.wakeup
  [ 5] sun.nio.ch.Poller.polled
  [ 6] sun.nio.ch.KQueuePoller.poll
  [ 7] sun.nio.ch.Poller.poll
  [ 8] sun.nio.ch.Poller.pollLoop
  [ 9] sun.nio.ch.Poller$$Lambda.0x00000001340f1b78.run
  [10] java.lang.Thread.runWith
  [11] java.lang.Thread.run
  [12] jdk.internal.misc.InnocuousThread.run

--- 8520000 ns (0.16%), 852 samples
  [ 0] java.util.concurrent.ForkJoinPool.awaitWork
  [ 1] java.util.concurrent.ForkJoinPool.runWorker
  [ 2] java.util.concurrent.ForkJoinWorkerThread.run

--- 8510000 ns (0.16%), 851 samples
  [ 0] java.util.concurrent.ForkJoinPool.awaitWork
  [ 1] java.util.concurrent.ForkJoinPool.runWorker
  [ 2] java.util.concurrent.ForkJoinWorkerThread.run

--- 7490000 ns (0.14%), 749 samples
  [ 0] _platform_memmove$VARIANT$Haswell
  [ 1] Thaw<Config<(oop_kind)0, G1BarrierSet> >::thaw_fast
  [ 2] long* thaw<Config<(oop_kind)0, G1BarrierSet> >
  [ 3] Cont thaw
  [ 4] [unknown_Java]

--- 6640000 ns (0.13%), 664 samples
  [ 0] __psynch_cvsignal
  [ 1] Unsafe_Unpark
  [ 2] jdk.internal.misc.Unsafe.unpark
  [ 3] java.util.concurrent.locks.LockSupport.unpark
  [ 4] java.util.concurrent.LinkedTransferQueue$Node.tryMatch
  [ 5] java.util.concurrent.LinkedTransferQueue.xfer
  [ 6] java.util.concurrent.LinkedTransferQueue.add
  [ 7] sun.nio.ch.Poller.registerAsync
  [ 8] sun.nio.ch.Poller.pollIndirect
  [ 9] sun.nio.ch.Poller.poll
  [10] sun.nio.ch.Poller.poll
  [11] sun.nio.ch.NioSocketImpl.park
  [12] sun.nio.ch.NioSocketImpl.park
  [13] sun.nio.ch.NioSocketImpl.implRead
  [14] sun.nio.ch.NioSocketImpl.read
  [15] sun.nio.ch.NioSocketImpl$1.read
  [16] java.net.Socket$SocketInputStream.read
  [17] java.io.FilterInputStream.read
  [18] robaho.net.httpserver.HttpConnection$ActivityTimerInputStream.read
  [19] robaho.net.httpserver.NoSyncBufferedInputStream.fill
  [20] robaho.net.httpserver.NoSyncBufferedInputStream.read
  [21] robaho.net.httpserver.Request.readLine
  [22] robaho.net.httpserver.Request.<init>
  [23] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [24] robaho.net.httpserver.ServerImpl$Exchange.run
  [25] jdk.internal.vm.Continuation.enterSpecial
  [26] jdk.internal.vm.Continuation.run
  [27] java.lang.VirtualThread.runContinuation
  [28] java.lang.VirtualThread$$Lambda.0x00000001340b44c0.run
  [29] java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec
  [30] java.util.concurrent.ForkJoinTask.doExec
  [31] java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec
  [32] java.util.concurrent.ForkJoinPool.scan
  [33] java.util.concurrent.ForkJoinPool.runWorker
  [34] java.util.concurrent.ForkJoinWorkerThread.run

--- 6550000 ns (0.12%), 655 samples
  [ 0] Continuation::prepare_thaw
  [ 1] Cont thaw
  [ 2] [unknown_Java]

--- 6240000 ns (0.12%), 624 samples
  [ 0] __psynch_cvsignal
  [ 1] Unsafe_Unpark
  [ 2] jdk.internal.misc.Unsafe.unpark
  [ 3] java.util.concurrent.locks.LockSupport.unpark
  [ 4] java.util.concurrent.LinkedTransferQueue$Node.tryMatch
  [ 5] java.util.concurrent.LinkedTransferQueue.xfer
  [ 6] java.util.concurrent.LinkedTransferQueue.add
  [ 7] sun.nio.ch.Poller.registerAsync
  [ 8] sun.nio.ch.Poller.pollIndirect
  [ 9] sun.nio.ch.Poller.poll
  [10] sun.nio.ch.Poller.poll
  [11] sun.nio.ch.NioSocketImpl.park
  [12] sun.nio.ch.NioSocketImpl.park
  [13] sun.nio.ch.NioSocketImpl.implRead
  [14] sun.nio.ch.NioSocketImpl.read
  [15] sun.nio.ch.NioSocketImpl$1.read
  [16] java.net.Socket$SocketInputStream.read
  [17] java.io.FilterInputStream.read
  [18] robaho.net.httpserver.HttpConnection$ActivityTimerInputStream.read
  [19] robaho.net.httpserver.NoSyncBufferedInputStream.fill
  [20] robaho.net.httpserver.NoSyncBufferedInputStream.read
  [21] robaho.net.httpserver.Request.readLine
  [22] robaho.net.httpserver.Request.<init>
  [23] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [24] robaho.net.httpserver.ServerImpl$Exchange.run
  [25] jdk.internal.vm.Continuation.enterSpecial
  [26] jdk.internal.vm.Continuation.run
  [27] java.lang.VirtualThread.runContinuation
  [28] java.lang.VirtualThread$$Lambda.0x00000001340b44c0.run
  [29] java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec
  [30] java.util.concurrent.ForkJoinTask.doExec
  [31] java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec
  [32] java.util.concurrent.ForkJoinPool.scan
  [33] java.util.concurrent.ForkJoinPool.runWorker
  [34] java.util.concurrent.ForkJoinWorkerThread.run

--- 6150000 ns (0.12%), 615 samples
  [ 0] jdk.internal.misc.Unsafe.park
  [ 1] java.util.concurrent.locks.LockSupport.park
  [ 2] java.util.concurrent.ForkJoinPool.awaitWork
  [ 3] java.util.concurrent.ForkJoinPool.runWorker
  [ 4] java.util.concurrent.ForkJoinWorkerThread.run

--- 6150000 ns (0.12%), 615 samples
  [ 0] __psynch_cvwait
  [ 1] Parker::park
  [ 2] Unsafe_Park
  [ 3] jdk.internal.misc.Unsafe.park
  [ 4] java.util.concurrent.locks.LockSupport.parkUntil
  [ 5] java.util.concurrent.ForkJoinPool.awaitWork
  [ 6] java.util.concurrent.ForkJoinPool.runWorker
  [ 7] java.util.concurrent.ForkJoinWorkerThread.run

--- 6000000 ns (0.11%), 600 samples
  [ 0] jdk.internal.misc.Unsafe.park
  [ 1] java.util.concurrent.locks.LockSupport.park
  [ 2] java.util.concurrent.ForkJoinPool.awaitWork
  [ 3] java.util.concurrent.ForkJoinPool.runWorker
  [ 4] java.util.concurrent.ForkJoinWorkerThread.run

--- 5930000 ns (0.11%), 593 samples
  [ 0] __psynch_cvwait
  [ 1] Parker::park
  [ 2] Unsafe_Park
  [ 3] jdk.internal.misc.Unsafe.park
  [ 4] java.util.concurrent.locks.LockSupport.parkUntil
  [ 5] java.util.concurrent.ForkJoinPool.awaitWork
  [ 6] java.util.concurrent.ForkJoinPool.runWorker
  [ 7] java.util.concurrent.ForkJoinWorkerThread.run

--- 5830000 ns (0.11%), 583 samples
  [ 0] jdk.internal.misc.Unsafe.park
  [ 1] java.util.concurrent.locks.LockSupport.park
  [ 2] java.util.concurrent.ForkJoinPool.awaitWork
  [ 3] java.util.concurrent.ForkJoinPool.runWorker
  [ 4] java.util.concurrent.ForkJoinWorkerThread.run

--- 5800000 ns (0.11%), 580 samples
  [ 0] write
  [ 1] sun.nio.ch.SocketDispatcher.write0
  [ 2] sun.nio.ch.SocketDispatcher.write
  [ 3] sun.nio.ch.NioSocketImpl.tryWrite
  [ 4] sun.nio.ch.NioSocketImpl.implWrite
  [ 5] sun.nio.ch.NioSocketImpl.write
  [ 6] sun.nio.ch.NioSocketImpl$2.write
  [ 7] java.net.Socket$SocketOutputStream.write
  [ 8] robaho.net.httpserver.HttpConnection$ActivityTimerOutputStream.write
  [ 9] java.io.BufferedOutputStream.flushBuffer
  [10] java.io.BufferedOutputStream.implFlush
  [11] java.io.BufferedOutputStream.flush
  [12] java.io.FilterOutputStream.flush
  [13] robaho.net.httpserver.FixedLengthOutputStream.close
  [14] robaho.net.httpserver.PlaceholderOutputStream.close
  [15] benchmarks.Server.lambda$createPlaintextHandler$0
  [16] benchmarks.Server$$Lambda.0x0000000134004ac0.handle
  [17] com.sun.net.httpserver.Filter$Chain.doFilter
  [18] robaho.net.httpserver.AuthFilter.doFilter
  [19] com.sun.net.httpserver.Filter$Chain.doFilter
  [20] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [21] com.sun.net.httpserver.Filter$Chain.doFilter
  [22] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [23] jdk.internal.vm.Continuation.enterSpecial
  [24] jdk.internal.vm.Continuation.run
  [25] java.lang.VirtualThread.runContinuation
  [26] java.lang.VirtualThread$$Lambda.0x00000001340b44c0.run
  [27] java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec
  [28] java.util.concurrent.ForkJoinTask.doExec
  [29] java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec
  [30] java.util.concurrent.ForkJoinPool.scan
  [31] java.util.concurrent.ForkJoinPool.runWorker
  [32] java.util.concurrent.ForkJoinWorkerThread.run

--- 5780000 ns (0.11%), 578 samples
  [ 0] write
  [ 1] sun.nio.ch.SocketDispatcher.write0
  [ 2] sun.nio.ch.SocketDispatcher.write
  [ 3] sun.nio.ch.NioSocketImpl.tryWrite
  [ 4] sun.nio.ch.NioSocketImpl.implWrite
  [ 5] sun.nio.ch.NioSocketImpl.write
  [ 6] sun.nio.ch.NioSocketImpl$2.write
  [ 7] java.net.Socket$SocketOutputStream.write
  [ 8] robaho.net.httpserver.HttpConnection$ActivityTimerOutputStream.write
  [ 9] java.io.BufferedOutputStream.flushBuffer
  [10] java.io.BufferedOutputStream.implFlush
  [11] java.io.BufferedOutputStream.flush
  [12] java.io.FilterOutputStream.flush
  [13] robaho.net.httpserver.FixedLengthOutputStream.close
  [14] robaho.net.httpserver.PlaceholderOutputStream.close
  [15] benchmarks.Server.lambda$createPlaintextHandler$0
  [16] benchmarks.Server$$Lambda.0x0000000134004ac0.handle
  [17] com.sun.net.httpserver.Filter$Chain.doFilter
  [18] robaho.net.httpserver.AuthFilter.doFilter
  [19] com.sun.net.httpserver.Filter$Chain.doFilter
  [20] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [21] com.sun.net.httpserver.Filter$Chain.doFilter
  [22] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [23] jdk.internal.vm.Continuation.enterSpecial
  [24] jdk.internal.vm.Continuation.run
  [25] java.lang.VirtualThread.runContinuation
  [26] java.lang.VirtualThread$$Lambda.0x00000001340b44c0.run
  [27] java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec
  [28] java.util.concurrent.ForkJoinTask.doExec
  [29] java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec
  [30] java.util.concurrent.ForkJoinPool.scan
  [31] java.util.concurrent.ForkJoinPool.runWorker
  [32] java.util.concurrent.ForkJoinWorkerThread.run

--- 5450000 ns (0.10%), 545 samples
  [ 0] java.util.concurrent.ForkJoinPool.scan
  [ 1] java.util.concurrent.ForkJoinPool.runWorker
  [ 2] java.util.concurrent.ForkJoinWorkerThread.run

--- 5430000 ns (0.10%), 543 samples
  [ 0] __psynch_cvsignal
  [ 1] Unsafe_Unpark
  [ 2] jdk.internal.misc.Unsafe.unpark
  [ 3] java.util.concurrent.locks.LockSupport.unpark
  [ 4] java.util.concurrent.LinkedTransferQueue$Node.tryMatch
  [ 5] java.util.concurrent.LinkedTransferQueue.xfer
  [ 6] java.util.concurrent.LinkedTransferQueue.add
  [ 7] sun.nio.ch.Poller.registerAsync
  [ 8] sun.nio.ch.Poller.pollIndirect
  [ 9] sun.nio.ch.Poller.poll
  [10] sun.nio.ch.Poller.poll
  [11] sun.nio.ch.NioSocketImpl.park
  [12] sun.nio.ch.NioSocketImpl.park
  [13] sun.nio.ch.NioSocketImpl.implRead
  [14] sun.nio.ch.NioSocketImpl.read
  [15] sun.nio.ch.NioSocketImpl$1.read
  [16] java.net.Socket$SocketInputStream.read
  [17] java.io.FilterInputStream.read
  [18] robaho.net.httpserver.HttpConnection$ActivityTimerInputStream.read
  [19] robaho.net.httpserver.NoSyncBufferedInputStream.fill
  [20] robaho.net.httpserver.NoSyncBufferedInputStream.read
  [21] robaho.net.httpserver.Request.readLine
  [22] robaho.net.httpserver.Request.<init>
  [23] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [24] robaho.net.httpserver.ServerImpl$Exchange.run
  [25] jdk.internal.vm.Continuation.enterSpecial
  [26] jdk.internal.vm.Continuation.run
  [27] java.lang.VirtualThread.runContinuation
  [28] java.lang.VirtualThread$$Lambda.0x00000001340b44c0.run
  [29] java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec
  [30] java.util.concurrent.ForkJoinTask.doExec
  [31] java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec
  [32] java.util.concurrent.ForkJoinPool.scan
  [33] java.util.concurrent.ForkJoinPool.runWorker
  [34] java.util.concurrent.ForkJoinWorkerThread.run

--- 5200000 ns (0.10%), 520 samples
  [ 0] jdk.internal.misc.Unsafe.unpark
  [ 1] java.util.concurrent.locks.LockSupport.unpark
  [ 2] java.util.concurrent.ForkJoinPool.signalWork
  [ 3] java.util.concurrent.ForkJoinPool$WorkQueue.push
  [ 4] java.util.concurrent.ForkJoinPool.poolSubmit
  [ 5] java.util.concurrent.ForkJoinPool.execute
  [ 6] java.lang.VirtualThread.submitRunContinuation
  [ 7] java.lang.VirtualThread.unpark
  [ 8] java.lang.System$2.unparkVirtualThread
  [ 9] jdk.internal.misc.VirtualThreads.unpark
  [10] java.util.concurrent.locks.LockSupport.unpark
  [11] sun.nio.ch.Poller.wakeup
  [12] sun.nio.ch.Poller.polled
  [13] sun.nio.ch.KQueuePoller.poll
  [14] sun.nio.ch.Poller.poll
  [15] sun.nio.ch.Poller.pollLoop
  [16] sun.nio.ch.Poller$$Lambda.0x00000001340f1b78.run
  [17] java.lang.Thread.runWith
  [18] java.lang.Thread.run
  [19] jdk.internal.misc.InnocuousThread.run

--- 5120000 ns (0.10%), 512 samples
  [ 0] sun.nio.ch.SocketDispatcher.write0
  [ 1] sun.nio.ch.SocketDispatcher.write
  [ 2] sun.nio.ch.NioSocketImpl.tryWrite
  [ 3] sun.nio.ch.NioSocketImpl.implWrite
  [ 4] sun.nio.ch.NioSocketImpl.write
  [ 5] sun.nio.ch.NioSocketImpl$2.write
  [ 6] java.net.Socket$SocketOutputStream.write
  [ 7] robaho.net.httpserver.HttpConnection$ActivityTimerOutputStream.write
  [ 8] java.io.BufferedOutputStream.flushBuffer
  [ 9] java.io.BufferedOutputStream.implFlush
  [10] java.io.BufferedOutputStream.flush
  [11] java.io.FilterOutputStream.flush
  [12] robaho.net.httpserver.FixedLengthOutputStream.close
  [13] robaho.net.httpserver.PlaceholderOutputStream.close
  [14] benchmarks.Server.lambda$createPlaintextHandler$0
  [15] benchmarks.Server$$Lambda.0x0000000134004ac0.handle
  [16] com.sun.net.httpserver.Filter$Chain.doFilter
  [17] robaho.net.httpserver.AuthFilter.doFilter
  [18] com.sun.net.httpserver.Filter$Chain.doFilter
  [19] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [20] com.sun.net.httpserver.Filter$Chain.doFilter
  [21] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [22] robaho.net.httpserver.ServerImpl$Exchange.run
  [23] jdk.internal.vm.Continuation.enterSpecial
  [24] jdk.internal.vm.Continuation.run
  [25] java.lang.VirtualThread.runContinuation
  [26] java.lang.VirtualThread$$Lambda.0x00000001340b44c0.run
  [27] java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec
  [28] java.util.concurrent.ForkJoinTask.doExec
  [29] java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec
  [30] java.util.concurrent.ForkJoinPool.scan
  [31] java.util.concurrent.ForkJoinPool.runWorker
  [32] java.util.concurrent.ForkJoinWorkerThread.run

--- 5020000 ns (0.09%), 502 samples
  [ 0] __psynch_cvwait
  [ 1] Parker::park
  [ 2] Unsafe_Park
  [ 3] jdk.internal.misc.Unsafe.park
  [ 4] java.util.concurrent.locks.LockSupport.parkUntil
  [ 5] java.util.concurrent.ForkJoinPool.awaitWork
  [ 6] java.util.concurrent.ForkJoinPool.runWorker
  [ 7] java.util.concurrent.ForkJoinWorkerThread.run

--- 5010000 ns (0.09%), 501 samples
  [ 0] jdk.internal.misc.Unsafe.park
  [ 1] java.util.concurrent.locks.LockSupport.park
  [ 2] java.util.concurrent.ForkJoinPool.awaitWork
  [ 3] java.util.concurrent.ForkJoinPool.runWorker
  [ 4] java.util.concurrent.ForkJoinWorkerThread.run

--- 4810000 ns (0.09%), 481 samples
  [ 0] sched_yield
  [ 1] java.lang.Thread.yield0
  [ 2] java.lang.Thread.yield
  [ 3] java.util.concurrent.LinkedTransferQueue.awaitMatch
  [ 4] java.util.concurrent.LinkedTransferQueue.xfer
  [ 5] java.util.concurrent.LinkedTransferQueue.take
  [ 6] sun.nio.ch.Poller.updateLoop
  [ 7] sun.nio.ch.Poller$$Lambda.0x00000001340f1fb8.run
  [ 8] java.lang.Thread.runWith
  [ 9] java.lang.Thread.run
  [10] jdk.internal.misc.InnocuousThread.run

--- 4810000 ns (0.09%), 481 samples
  [ 0] robaho.net.httpserver.ExchangeImpl.bytes
  [ 1] robaho.net.httpserver.ExchangeImpl.write
  [ 2] robaho.net.httpserver.ExchangeImpl.sendResponseHeaders
  [ 3] robaho.net.httpserver.HttpExchangeImpl.sendResponseHeaders
  [ 4] benchmarks.Server.lambda$createPlaintextHandler$0
  [ 5] benchmarks.Server$$Lambda.0x0000000134004ac0.handle
  [ 6] com.sun.net.httpserver.Filter$Chain.doFilter
  [ 7] robaho.net.httpserver.AuthFilter.doFilter
  [ 8] com.sun.net.httpserver.Filter$Chain.doFilter
  [ 9] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [10] com.sun.net.httpserver.Filter$Chain.doFilter
  [11] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [12] robaho.net.httpserver.ServerImpl$Exchange.run
  [13] jdk.internal.vm.Continuation.enterSpecial
  [14] jdk.internal.vm.Continuation.run
  [15] java.lang.VirtualThread.runContinuation
  [16] java.lang.VirtualThread$$Lambda.0x00000001340b44c0.run
  [17] java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec
  [18] java.util.concurrent.ForkJoinTask.doExec
  [19] java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec
  [20] java.util.concurrent.ForkJoinPool.scan
  [21] java.util.concurrent.ForkJoinPool.runWorker
  [22] java.util.concurrent.ForkJoinWorkerThread.run

--- 4620000 ns (0.09%), 462 samples
  [ 0] robaho.net.httpserver.Request.<init>
  [ 1] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [ 2] robaho.net.httpserver.ServerImpl$Exchange.run
  [ 3] jdk.internal.vm.Continuation.enterSpecial
  [ 4] jdk.internal.vm.Continuation.run
  [ 5] java.lang.VirtualThread.runContinuation
  [ 6] java.lang.VirtualThread$$Lambda.0x00000001340b44c0.run
  [ 7] java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec
  [ 8] java.util.concurrent.ForkJoinTask.doExec
  [ 9] java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec
  [10] java.util.concurrent.ForkJoinPool.scan
  [11] java.util.concurrent.ForkJoinPool.runWorker
  [12] java.util.concurrent.ForkJoinWorkerThread.run

--- 4610000 ns (0.09%), 461 samples
  [ 0] itable stub
  [ 1] java.time.format.DateTimeFormatterBuilder$CompositePrinterParser.format
  [ 2] java.time.format.DateTimeFormatter.formatTo
  [ 3] java.time.format.DateTimeFormatter.format
  [ 4] robaho.net.httpserver.ExchangeImpl.sendResponseHeaders
  [ 5] robaho.net.httpserver.HttpExchangeImpl.sendResponseHeaders
  [ 6] benchmarks.Server.lambda$createPlaintextHandler$0
  [ 7] benchmarks.Server$$Lambda.0x0000000134004ac0.handle
  [ 8] com.sun.net.httpserver.Filter$Chain.doFilter
  [ 9] robaho.net.httpserver.AuthFilter.doFilter
  [10] com.sun.net.httpserver.Filter$Chain.doFilter
  [11] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [12] com.sun.net.httpserver.Filter$Chain.doFilter
  [13] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [14] robaho.net.httpserver.ServerImpl$Exchange.run
  [15] jdk.internal.vm.Continuation.enterSpecial
  [16] jdk.internal.vm.Continuation.run
  [17] java.lang.VirtualThread.runContinuation
  [18] java.lang.VirtualThread$$Lambda.0x00000001340b44c0.run
  [19] java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec
  [20] java.util.concurrent.ForkJoinTask.doExec
  [21] java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec
  [22] java.util.concurrent.ForkJoinPool.scan
  [23] java.util.concurrent.ForkJoinPool.runWorker
  [24] java.util.concurrent.ForkJoinWorkerThread.run

--- 4570000 ns (0.09%), 457 samples
  [ 0] __psynch_cvsignal
  [ 1] Unsafe_Unpark
  [ 2] jdk.internal.misc.Unsafe.unpark
  [ 3] java.util.concurrent.locks.LockSupport.unpark
  [ 4] java.util.concurrent.LinkedTransferQueue$Node.tryMatch
  [ 5] java.util.concurrent.LinkedTransferQueue.xfer
  [ 6] java.util.concurrent.LinkedTransferQueue.add
  [ 7] sun.nio.ch.Poller.registerAsync
  [ 8] sun.nio.ch.Poller.pollIndirect
  [ 9] sun.nio.ch.Poller.poll
  [10] sun.nio.ch.Poller.poll
  [11] sun.nio.ch.NioSocketImpl.park
  [12] sun.nio.ch.NioSocketImpl.park
  [13] sun.nio.ch.NioSocketImpl.implRead
  [14] sun.nio.ch.NioSocketImpl.read
  [15] sun.nio.ch.NioSocketImpl$1.read
  [16] java.net.Socket$SocketInputStream.read
  [17] java.io.FilterInputStream.read
  [18] robaho.net.httpserver.HttpConnection$ActivityTimerInputStream.read
  [19] robaho.net.httpserver.NoSyncBufferedInputStream.fill
  [20] robaho.net.httpserver.NoSyncBufferedInputStream.read
  [21] robaho.net.httpserver.Request.readLine
  [22] robaho.net.httpserver.Request.<init>
  [23] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [24] robaho.net.httpserver.ServerImpl$Exchange.run
  [25] jdk.internal.vm.Continuation.enterSpecial
  [26] jdk.internal.vm.Continuation.run
  [27] java.lang.VirtualThread.runContinuation
  [28] java.lang.VirtualThread$$Lambda.0x00000001340b44c0.run
  [29] java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec
  [30] java.util.concurrent.ForkJoinTask.doExec
  [31] java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec
  [32] java.util.concurrent.ForkJoinPool.scan
  [33] java.util.concurrent.ForkJoinPool.runWorker
  [34] java.util.concurrent.ForkJoinWorkerThread.run

--- 4550000 ns (0.09%), 455 samples
  [ 0] sun.nio.ch.KQueue.register
  [ 1] sun.nio.ch.KQueuePoller.implRegister
  [ 2] sun.nio.ch.Poller.updateLoop
  [ 3] sun.nio.ch.Poller$$Lambda.0x00000001340f1fb8.run
  [ 4] java.lang.Thread.runWith
  [ 5] java.lang.Thread.run
  [ 6] jdk.internal.misc.InnocuousThread.run

--- 4440000 ns (0.08%), 444 samples
  [ 0] robaho.net.httpserver.ExchangeImpl.bytes
  [ 1] robaho.net.httpserver.ExchangeImpl.write
  [ 2] robaho.net.httpserver.ExchangeImpl.sendResponseHeaders
  [ 3] robaho.net.httpserver.HttpExchangeImpl.sendResponseHeaders
  [ 4] benchmarks.Server.lambda$createPlaintextHandler$0
  [ 5] benchmarks.Server$$Lambda.0x0000000134004ac0.handle
  [ 6] com.sun.net.httpserver.Filter$Chain.doFilter
  [ 7] robaho.net.httpserver.AuthFilter.doFilter
  [ 8] com.sun.net.httpserver.Filter$Chain.doFilter
  [ 9] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [10] com.sun.net.httpserver.Filter$Chain.doFilter
  [11] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [12] robaho.net.httpserver.ServerImpl$Exchange.run
  [13] jdk.internal.vm.Continuation.enterSpecial
  [14] jdk.internal.vm.Continuation.run
  [15] java.lang.VirtualThread.runContinuation
  [16] java.lang.VirtualThread$$Lambda.0x00000001340b44c0.run
  [17] java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec
  [18] java.util.concurrent.ForkJoinTask.doExec
  [19] java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec
  [20] java.util.concurrent.ForkJoinPool.scan
  [21] java.util.concurrent.ForkJoinPool.runWorker
  [22] java.util.concurrent.ForkJoinWorkerThread.run

--- 4440000 ns (0.08%), 444 samples
  [ 0] sun.nio.ch.SocketDispatcher.write0
  [ 1] sun.nio.ch.SocketDispatcher.write
  [ 2] sun.nio.ch.NioSocketImpl.tryWrite
  [ 3] sun.nio.ch.NioSocketImpl.implWrite
  [ 4] sun.nio.ch.NioSocketImpl.write
  [ 5] sun.nio.ch.NioSocketImpl$2.write
  [ 6] java.net.Socket$SocketOutputStream.write
  [ 7] robaho.net.httpserver.HttpConnection$ActivityTimerOutputStream.write
  [ 8] java.io.BufferedOutputStream.flushBuffer
  [ 9] java.io.BufferedOutputStream.implFlush
  [10] java.io.BufferedOutputStream.flush
  [11] java.io.FilterOutputStream.flush
  [12] robaho.net.httpserver.FixedLengthOutputStream.close
  [13] robaho.net.httpserver.PlaceholderOutputStream.close
  [14] benchmarks.Server.lambda$createPlaintextHandler$0
  [15] benchmarks.Server$$Lambda.0x0000000134004ac0.handle
  [16] com.sun.net.httpserver.Filter$Chain.doFilter
  [17] robaho.net.httpserver.AuthFilter.doFilter
  [18] com.sun.net.httpserver.Filter$Chain.doFilter
  [19] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [20] com.sun.net.httpserver.Filter$Chain.doFilter
  [21] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [22] robaho.net.httpserver.ServerImpl$Exchange.run
  [23] jdk.internal.vm.Continuation.enterSpecial
  [24] jdk.internal.vm.Continuation.run
  [25] java.lang.VirtualThread.runContinuation
  [26] java.lang.VirtualThread$$Lambda.0x00000001340b44c0.run
  [27] java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec
  [28] java.util.concurrent.ForkJoinTask.doExec
  [29] java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec
  [30] java.util.concurrent.ForkJoinPool.scan
  [31] java.util.concurrent.ForkJoinPool.runWorker
  [32] java.util.concurrent.ForkJoinWorkerThread.run

--- 4360000 ns (0.08%), 436 samples
  [ 0] sun.nio.ch.Poller.registerAsync
  [ 1] sun.nio.ch.Poller.pollIndirect
  [ 2] sun.nio.ch.Poller.poll
  [ 3] sun.nio.ch.Poller.poll
  [ 4] sun.nio.ch.NioSocketImpl.park
  [ 5] sun.nio.ch.NioSocketImpl.park
  [ 6] sun.nio.ch.NioSocketImpl.implRead
  [ 7] sun.nio.ch.NioSocketImpl.read
  [ 8] sun.nio.ch.NioSocketImpl$1.read
  [ 9] java.net.Socket$SocketInputStream.read
  [10] java.io.FilterInputStream.read
  [11] robaho.net.httpserver.HttpConnection$ActivityTimerInputStream.read
  [12] robaho.net.httpserver.NoSyncBufferedInputStream.fill
  [13] robaho.net.httpserver.NoSyncBufferedInputStream.read
  [14] robaho.net.httpserver.Request.readLine
  [15] robaho.net.httpserver.Request.<init>
  [16] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [17] robaho.net.httpserver.ServerImpl$Exchange.run
  [18] jdk.internal.vm.Continuation.enterSpecial
  [19] jdk.internal.vm.Continuation.run
  [20] java.lang.VirtualThread.runContinuation
  [21] java.lang.VirtualThread$$Lambda.0x00000001340b44c0.run
  [22] java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec
  [23] java.util.concurrent.ForkJoinTask.doExec
  [24] java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec
  [25] java.util.concurrent.ForkJoinPool.scan
  [26] java.util.concurrent.ForkJoinPool.runWorker
  [27] java.util.concurrent.ForkJoinWorkerThread.run

--- 4280000 ns (0.08%), 428 samples
  [ 0] Java_sun_nio_ch_KQueue_poll
  [ 1] sun.nio.ch.KQueue.poll
  [ 2] sun.nio.ch.KQueuePoller.poll
  [ 3] sun.nio.ch.Poller.poll
  [ 4] sun.nio.ch.Poller.pollLoop
  [ 5] sun.nio.ch.Poller$$Lambda.0x00000001340f1b78.run
  [ 6] java.lang.Thread.runWith
  [ 7] java.lang.Thread.run
  [ 8] jdk.internal.misc.InnocuousThread.run

--- 4170000 ns (0.08%), 417 samples
  [ 0] __psynch_cvwait
  [ 1] Parker::park
  [ 2] Unsafe_Park
  [ 3] jdk.internal.misc.Unsafe.park
  [ 4] java.util.concurrent.locks.LockSupport.parkUntil
  [ 5] java.util.concurrent.ForkJoinPool.awaitWork
  [ 6] java.util.concurrent.ForkJoinPool.runWorker
  [ 7] java.util.concurrent.ForkJoinWorkerThread.run

--- 3950000 ns (0.07%), 395 samples
  [ 0] sun.nio.ch.Poller.registerAsync
  [ 1] sun.nio.ch.Poller.pollIndirect
  [ 2] sun.nio.ch.Poller.poll
  [ 3] sun.nio.ch.Poller.poll
  [ 4] sun.nio.ch.NioSocketImpl.park
  [ 5] sun.nio.ch.NioSocketImpl.park
  [ 6] sun.nio.ch.NioSocketImpl.implRead
  [ 7] sun.nio.ch.NioSocketImpl.read
  [ 8] sun.nio.ch.NioSocketImpl$1.read
  [ 9] java.net.Socket$SocketInputStream.read
  [10] java.io.FilterInputStream.read
  [11] robaho.net.httpserver.HttpConnection$ActivityTimerInputStream.read
  [12] robaho.net.httpserver.NoSyncBufferedInputStream.fill
  [13] robaho.net.httpserver.NoSyncBufferedInputStream.read
  [14] robaho.net.httpserver.Request.readLine
  [15] robaho.net.httpserver.Request.<init>
  [16] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [17] robaho.net.httpserver.ServerImpl$Exchange.run
  [18] jdk.internal.vm.Continuation.enterSpecial
  [19] jdk.internal.vm.Continuation.run
  [20] java.lang.VirtualThread.runContinuation
  [21] java.lang.VirtualThread$$Lambda.0x00000001340b44c0.run
  [22] java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec
  [23] java.util.concurrent.ForkJoinTask.doExec
  [24] java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec
  [25] java.util.concurrent.ForkJoinPool.scan
  [26] java.util.concurrent.ForkJoinPool.runWorker
  [27] java.util.concurrent.ForkJoinWorkerThread.run

--- 3890000 ns (0.07%), 389 samples
  [ 0] robaho.net.httpserver.Request.<init>
  [ 1] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [ 2] robaho.net.httpserver.ServerImpl$Exchange.run
  [ 3] jdk.internal.vm.Continuation.enterSpecial
  [ 4] jdk.internal.vm.Continuation.run
  [ 5] java.lang.VirtualThread.runContinuation
  [ 6] java.lang.VirtualThread$$Lambda.0x00000001340b44c0.run
  [ 7] java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec
  [ 8] java.util.concurrent.ForkJoinTask.doExec
  [ 9] java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec
  [10] java.util.concurrent.ForkJoinPool.scan
  [11] java.util.concurrent.ForkJoinPool.runWorker
  [12] java.util.concurrent.ForkJoinWorkerThread.run

--- 3800000 ns (0.07%), 380 samples
  [ 0] itable stub
  [ 1] java.time.format.DateTimeFormatterBuilder$CompositePrinterParser.format
  [ 2] java.time.format.DateTimeFormatter.formatTo
  [ 3] java.time.format.DateTimeFormatter.format
  [ 4] robaho.net.httpserver.ExchangeImpl.sendResponseHeaders
  [ 5] robaho.net.httpserver.HttpExchangeImpl.sendResponseHeaders
  [ 6] benchmarks.Server.lambda$createPlaintextHandler$0
  [ 7] benchmarks.Server$$Lambda.0x0000000134004ac0.handle
  [ 8] com.sun.net.httpserver.Filter$Chain.doFilter
  [ 9] robaho.net.httpserver.AuthFilter.doFilter
  [10] com.sun.net.httpserver.Filter$Chain.doFilter
  [11] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [12] com.sun.net.httpserver.Filter$Chain.doFilter
  [13] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [14] robaho.net.httpserver.ServerImpl$Exchange.run
  [15] jdk.internal.vm.Continuation.enterSpecial
  [16] jdk.internal.vm.Continuation.run
  [17] java.lang.VirtualThread.runContinuation
  [18] java.lang.VirtualThread$$Lambda.0x00000001340b44c0.run
  [19] java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec
  [20] java.util.concurrent.ForkJoinTask.doExec
  [21] java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec
  [22] java.util.concurrent.ForkJoinPool.scan
  [23] java.util.concurrent.ForkJoinPool.runWorker
  [24] java.util.concurrent.ForkJoinWorkerThread.run

--- 3550000 ns (0.07%), 355 samples
  [ 0] Java_sun_nio_ch_KQueue_register
  [ 1] sun.nio.ch.KQueue.register
  [ 2] sun.nio.ch.KQueuePoller.implRegister
  [ 3] sun.nio.ch.Poller.updateLoop
  [ 4] sun.nio.ch.Poller$$Lambda.0x00000001340f1fb8.run
  [ 5] java.lang.Thread.runWith
  [ 6] java.lang.Thread.run
  [ 7] jdk.internal.misc.InnocuousThread.run

--- 3530000 ns (0.07%), 353 samples
  [ 0] write
  [ 1] sun.nio.ch.SocketDispatcher.write0
  [ 2] sun.nio.ch.SocketDispatcher.write
  [ 3] sun.nio.ch.NioSocketImpl.tryWrite
  [ 4] sun.nio.ch.NioSocketImpl.implWrite
  [ 5] sun.nio.ch.NioSocketImpl.write
  [ 6] sun.nio.ch.NioSocketImpl$2.write
  [ 7] java.net.Socket$SocketOutputStream.write
  [ 8] robaho.net.httpserver.HttpConnection$ActivityTimerOutputStream.write
  [ 9] java.io.BufferedOutputStream.flushBuffer
  [10] java.io.BufferedOutputStream.implFlush
  [11] java.io.BufferedOutputStream.flush
  [12] java.io.FilterOutputStream.flush
  [13] robaho.net.httpserver.FixedLengthOutputStream.close
  [14] robaho.net.httpserver.PlaceholderOutputStream.close
  [15] benchmarks.Server.lambda$createPlaintextHandler$0
  [16] benchmarks.Server$$Lambda.0x0000000134004ac0.handle
  [17] com.sun.net.httpserver.Filter$Chain.doFilter
  [18] robaho.net.httpserver.AuthFilter.doFilter
  [19] com.sun.net.httpserver.Filter$Chain.doFilter
  [20] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [21] com.sun.net.httpserver.Filter$Chain.doFilter
  [22] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [23] jdk.internal.vm.Continuation.enterSpecial
  [24] jdk.internal.vm.Continuation.run
  [25] java.lang.VirtualThread.runContinuation
  [26] java.lang.VirtualThread$$Lambda.0x00000001340b44c0.run
  [27] java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec
  [28] java.util.concurrent.ForkJoinTask.doExec
  [29] java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec
  [30] java.util.concurrent.ForkJoinPool.scan
  [31] java.util.concurrent.ForkJoinPool.runWorker
  [32] java.util.concurrent.ForkJoinWorkerThread.run

--- 3530000 ns (0.07%), 353 samples
  [ 0] robaho.net.httpserver.Request.<init>
  [ 1] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [ 2] robaho.net.httpserver.ServerImpl$Exchange.run
  [ 3] jdk.internal.vm.Continuation.enterSpecial
  [ 4] jdk.internal.vm.Continuation.run
  [ 5] java.lang.VirtualThread.runContinuation
  [ 6] java.lang.VirtualThread$$Lambda.0x00000001340b44c0.run
  [ 7] java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec
  [ 8] java.util.concurrent.ForkJoinTask.doExec
  [ 9] java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec
  [10] java.util.concurrent.ForkJoinPool.scan
  [11] java.util.concurrent.ForkJoinPool.runWorker
  [12] java.util.concurrent.ForkJoinWorkerThread.run

--- 3530000 ns (0.07%), 353 samples
  [ 0] java.util.concurrent.ForkJoinPool.scan
  [ 1] java.util.concurrent.ForkJoinPool.runWorker
  [ 2] java.util.concurrent.ForkJoinWorkerThread.run

--- 3360000 ns (0.06%), 336 samples
  [ 0] __psynch_cvsignal
  [ 1] Unsafe_Unpark
  [ 2] jdk.internal.misc.Unsafe.unpark
  [ 3] java.util.concurrent.locks.LockSupport.unpark
  [ 4] java.util.concurrent.LinkedTransferQueue$Node.tryMatch
  [ 5] java.util.concurrent.LinkedTransferQueue.xfer
  [ 6] java.util.concurrent.LinkedTransferQueue.add
  [ 7] sun.nio.ch.Poller.registerAsync
  [ 8] sun.nio.ch.Poller.pollIndirect
  [ 9] sun.nio.ch.Poller.poll
  [10] sun.nio.ch.Poller.poll
  [11] sun.nio.ch.NioSocketImpl.park
  [12] sun.nio.ch.NioSocketImpl.park
  [13] sun.nio.ch.NioSocketImpl.implRead
  [14] sun.nio.ch.NioSocketImpl.read
  [15] sun.nio.ch.NioSocketImpl$1.read
  [16] java.net.Socket$SocketInputStream.read
  [17] java.io.FilterInputStream.read
  [18] robaho.net.httpserver.HttpConnection$ActivityTimerInputStream.read
  [19] robaho.net.httpserver.NoSyncBufferedInputStream.fill
  [20] robaho.net.httpserver.NoSyncBufferedInputStream.read
  [21] robaho.net.httpserver.Request.readLine
  [22] robaho.net.httpserver.Request.<init>
  [23] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [24] robaho.net.httpserver.ServerImpl$Exchange.run
  [25] jdk.internal.vm.Continuation.enterSpecial
  [26] jdk.internal.vm.Continuation.run
  [27] java.lang.VirtualThread.runContinuation
  [28] java.lang.VirtualThread$$Lambda.0x00000001340b44c0.run
  [29] java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec
  [30] java.util.concurrent.ForkJoinTask.doExec
  [31] java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec
  [32] java.util.concurrent.ForkJoinPool.scan
  [33] java.util.concurrent.ForkJoinPool.runWorker
  [34] java.util.concurrent.ForkJoinWorkerThread.run

--- 3310000 ns (0.06%), 331 samples
  [ 0] robaho.net.httpserver.Request.<init>
  [ 1] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [ 2] robaho.net.httpserver.ServerImpl$Exchange.run
  [ 3] jdk.internal.vm.Continuation.enterSpecial
  [ 4] jdk.internal.vm.Continuation.run
  [ 5] java.lang.VirtualThread.runContinuation
  [ 6] java.lang.VirtualThread$$Lambda.0x00000001340b44c0.run
  [ 7] java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec
  [ 8] java.util.concurrent.ForkJoinTask.doExec
  [ 9] java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec
  [10] java.util.concurrent.ForkJoinPool.scan
  [11] java.util.concurrent.ForkJoinPool.runWorker
  [12] java.util.concurrent.ForkJoinWorkerThread.run

--- 3250000 ns (0.06%), 325 samples
  [ 0] write
  [ 1] sun.nio.ch.SocketDispatcher.write0
  [ 2] sun.nio.ch.SocketDispatcher.write
  [ 3] sun.nio.ch.NioSocketImpl.tryWrite
  [ 4] sun.nio.ch.NioSocketImpl.implWrite
  [ 5] sun.nio.ch.NioSocketImpl.write
  [ 6] sun.nio.ch.NioSocketImpl$2.write
  [ 7] java.net.Socket$SocketOutputStream.write
  [ 8] robaho.net.httpserver.HttpConnection$ActivityTimerOutputStream.write
  [ 9] java.io.BufferedOutputStream.flushBuffer
  [10] java.io.BufferedOutputStream.implFlush
  [11] java.io.BufferedOutputStream.flush
  [12] java.io.FilterOutputStream.flush
  [13] robaho.net.httpserver.FixedLengthOutputStream.close
  [14] robaho.net.httpserver.PlaceholderOutputStream.close
  [15] benchmarks.Server.lambda$createPlaintextHandler$0
  [16] benchmarks.Server$$Lambda.0x0000000134004ac0.handle
  [17] com.sun.net.httpserver.Filter$Chain.doFilter
  [18] robaho.net.httpserver.AuthFilter.doFilter
  [19] com.sun.net.httpserver.Filter$Chain.doFilter
  [20] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [21] com.sun.net.httpserver.Filter$Chain.doFilter
  [22] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [23] jdk.internal.vm.Continuation.enterSpecial
  [24] jdk.internal.vm.Continuation.run
  [25] java.lang.VirtualThread.runContinuation
  [26] java.lang.VirtualThread$$Lambda.0x00000001340b44c0.run
  [27] java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec
  [28] java.util.concurrent.ForkJoinTask.doExec
  [29] java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec
  [30] java.util.concurrent.ForkJoinPool.scan
  [31] java.util.concurrent.ForkJoinPool.runWorker
  [32] java.util.concurrent.ForkJoinWorkerThread.run

--- 3250000 ns (0.06%), 325 samples
  [ 0] write
  [ 1] sun.nio.ch.SocketDispatcher.write0
  [ 2] sun.nio.ch.SocketDispatcher.write
  [ 3] sun.nio.ch.NioSocketImpl.tryWrite
  [ 4] sun.nio.ch.NioSocketImpl.implWrite
  [ 5] sun.nio.ch.NioSocketImpl.write
  [ 6] sun.nio.ch.NioSocketImpl$2.write
  [ 7] java.net.Socket$SocketOutputStream.write
  [ 8] robaho.net.httpserver.HttpConnection$ActivityTimerOutputStream.write
  [ 9] java.io.BufferedOutputStream.flushBuffer
  [10] java.io.BufferedOutputStream.implFlush
  [11] java.io.BufferedOutputStream.flush
  [12] java.io.FilterOutputStream.flush
  [13] robaho.net.httpserver.FixedLengthOutputStream.close
  [14] robaho.net.httpserver.PlaceholderOutputStream.close
  [15] benchmarks.Server.lambda$createPlaintextHandler$0
  [16] benchmarks.Server$$Lambda.0x0000000134004ac0.handle
  [17] com.sun.net.httpserver.Filter$Chain.doFilter
  [18] robaho.net.httpserver.AuthFilter.doFilter
  [19] com.sun.net.httpserver.Filter$Chain.doFilter
  [20] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [21] com.sun.net.httpserver.Filter$Chain.doFilter
  [22] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [23] jdk.internal.vm.Continuation.enterSpecial
  [24] jdk.internal.vm.Continuation.run
  [25] java.lang.VirtualThread.runContinuation
  [26] java.lang.VirtualThread$$Lambda.0x00000001340b44c0.run
  [27] java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec
  [28] java.util.concurrent.ForkJoinTask.doExec
  [29] java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec
  [30] java.util.concurrent.ForkJoinPool.scan
  [31] java.util.concurrent.ForkJoinPool.runWorker
  [32] java.util.concurrent.ForkJoinWorkerThread.run

--- 3230000 ns (0.06%), 323 samples
  [ 0] FastThreadsListHandle::FastThreadsListHandle
  [ 1] Unsafe_Unpark
  [ 2] jdk.internal.misc.Unsafe.unpark
  [ 3] java.util.concurrent.locks.LockSupport.unpark
  [ 4] java.util.concurrent.ForkJoinPool.signalWork
  [ 5] java.util.concurrent.ForkJoinPool$WorkQueue.push
  [ 6] java.util.concurrent.ForkJoinPool.poolSubmit
  [ 7] java.util.concurrent.ForkJoinPool.execute
  [ 8] java.lang.VirtualThread.submitRunContinuation
  [ 9] java.lang.VirtualThread.unpark
  [10] java.lang.System$2.unparkVirtualThread
  [11] jdk.internal.misc.VirtualThreads.unpark
  [12] java.util.concurrent.locks.LockSupport.unpark
  [13] sun.nio.ch.Poller.wakeup
  [14] sun.nio.ch.Poller.polled
  [15] sun.nio.ch.KQueuePoller.poll
  [16] sun.nio.ch.Poller.poll
  [17] sun.nio.ch.Poller.pollLoop
  [18] sun.nio.ch.Poller$$Lambda.0x00000001340f1b78.run
  [19] java.lang.Thread.runWith
  [20] java.lang.Thread.run
  [21] jdk.internal.misc.InnocuousThread.run

--- 3050000 ns (0.06%), 305 samples
  [ 0] write
  [ 1] sun.nio.ch.SocketDispatcher.write0
  [ 2] sun.nio.ch.SocketDispatcher.write
  [ 3] sun.nio.ch.NioSocketImpl.tryWrite
  [ 4] sun.nio.ch.NioSocketImpl.implWrite
  [ 5] sun.nio.ch.NioSocketImpl.write
  [ 6] sun.nio.ch.NioSocketImpl$2.write
  [ 7] java.net.Socket$SocketOutputStream.write
  [ 8] robaho.net.httpserver.HttpConnection$ActivityTimerOutputStream.write
  [ 9] java.io.BufferedOutputStream.flushBuffer
  [10] java.io.BufferedOutputStream.implFlush
  [11] java.io.BufferedOutputStream.flush
  [12] java.io.FilterOutputStream.flush
  [13] robaho.net.httpserver.FixedLengthOutputStream.close
  [14] robaho.net.httpserver.PlaceholderOutputStream.close
  [15] benchmarks.Server.lambda$createPlaintextHandler$0
  [16] benchmarks.Server$$Lambda.0x0000000134004ac0.handle
  [17] com.sun.net.httpserver.Filter$Chain.doFilter
  [18] robaho.net.httpserver.AuthFilter.doFilter
  [19] com.sun.net.httpserver.Filter$Chain.doFilter
  [20] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [21] com.sun.net.httpserver.Filter$Chain.doFilter
  [22] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [23] jdk.internal.vm.Continuation.enterSpecial
  [24] jdk.internal.vm.Continuation.run
  [25] java.lang.VirtualThread.runContinuation
  [26] java.lang.VirtualThread$$Lambda.0x00000001340b44c0.run
  [27] java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec
  [28] java.util.concurrent.ForkJoinTask.doExec
  [29] java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec
  [30] java.util.concurrent.ForkJoinPool.scan
  [31] java.util.concurrent.ForkJoinPool.runWorker
  [32] java.util.concurrent.ForkJoinWorkerThread.run

--- 3030000 ns (0.06%), 303 samples
  [ 0] java.util.concurrent.ForkJoinPool$WorkQueue.push
  [ 1] java.util.concurrent.ForkJoinPool.poolSubmit
  [ 2] java.util.concurrent.ForkJoinPool.execute
  [ 3] java.lang.VirtualThread.submitRunContinuation
  [ 4] java.lang.VirtualThread.unpark
  [ 5] java.lang.System$2.unparkVirtualThread
  [ 6] jdk.internal.misc.VirtualThreads.unpark
  [ 7] java.util.concurrent.locks.LockSupport.unpark
  [ 8] sun.nio.ch.Poller.wakeup
  [ 9] sun.nio.ch.Poller.polled
  [10] sun.nio.ch.KQueuePoller.poll
  [11] sun.nio.ch.Poller.poll
  [12] sun.nio.ch.Poller.pollLoop
  [13] sun.nio.ch.Poller$$Lambda.0x00000001340f1b78.run
  [14] java.lang.Thread.runWith
  [15] java.lang.Thread.run
  [16] jdk.internal.misc.InnocuousThread.run

--- 3010000 ns (0.06%), 301 samples
  [ 0] robaho.net.httpserver.ExchangeImpl.bytes
  [ 1] robaho.net.httpserver.ExchangeImpl.write
  [ 2] robaho.net.httpserver.ExchangeImpl.sendResponseHeaders
  [ 3] robaho.net.httpserver.HttpExchangeImpl.sendResponseHeaders
  [ 4] benchmarks.Server.lambda$createPlaintextHandler$0
  [ 5] benchmarks.Server$$Lambda.0x0000000134004ac0.handle
  [ 6] com.sun.net.httpserver.Filter$Chain.doFilter
  [ 7] robaho.net.httpserver.AuthFilter.doFilter
  [ 8] com.sun.net.httpserver.Filter$Chain.doFilter
  [ 9] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [10] com.sun.net.httpserver.Filter$Chain.doFilter
  [11] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [12] robaho.net.httpserver.ServerImpl$Exchange.run
  [13] jdk.internal.vm.Continuation.enterSpecial
  [14] jdk.internal.vm.Continuation.run
  [15] java.lang.VirtualThread.runContinuation
  [16] java.lang.VirtualThread$$Lambda.0x00000001340b44c0.run
  [17] java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec
  [18] java.util.concurrent.ForkJoinTask.doExec
  [19] java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec
  [20] java.util.concurrent.ForkJoinPool.scan
  [21] java.util.concurrent.ForkJoinPool.runWorker
  [22] java.util.concurrent.ForkJoinWorkerThread.run

--- 2950000 ns (0.06%), 295 samples
  [ 0] robaho.net.httpserver.ExchangeImpl.bytes
  [ 1] robaho.net.httpserver.ExchangeImpl.write
  [ 2] robaho.net.httpserver.ExchangeImpl.sendResponseHeaders
  [ 3] robaho.net.httpserver.HttpExchangeImpl.sendResponseHeaders
  [ 4] benchmarks.Server.lambda$createPlaintextHandler$0
  [ 5] benchmarks.Server$$Lambda.0x0000000134004ac0.handle
  [ 6] com.sun.net.httpserver.Filter$Chain.doFilter
  [ 7] robaho.net.httpserver.AuthFilter.doFilter
  [ 8] com.sun.net.httpserver.Filter$Chain.doFilter
  [ 9] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [10] com.sun.net.httpserver.Filter$Chain.doFilter
  [11] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [12] robaho.net.httpserver.ServerImpl$Exchange.run
  [13] jdk.internal.vm.Continuation.enterSpecial
  [14] jdk.internal.vm.Continuation.run
  [15] java.lang.VirtualThread.runContinuation
  [16] java.lang.VirtualThread$$Lambda.0x00000001340b44c0.run
  [17] java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec
  [18] java.util.concurrent.ForkJoinTask.doExec
  [19] java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec
  [20] java.util.concurrent.ForkJoinPool.scan
  [21] java.util.concurrent.ForkJoinPool.runWorker
  [22] java.util.concurrent.ForkJoinWorkerThread.run

--- 2880000 ns (0.05%), 288 samples
  [ 0] java.lang.ref.Reference.refersTo
  [ 1] java.lang.ThreadLocal$ThreadLocalMap.getEntry
  [ 2] java.lang.ThreadLocal.get
  [ 3] java.lang.ThreadLocal.getCarrierThreadLocal
  [ 4] java.lang.System$2.getCarrierThreadLocal
  [ 5] jdk.internal.misc.CarrierThreadLocal.get
  [ 6] sun.nio.ch.Util.getTemporaryDirectBuffer
  [ 7] sun.nio.ch.NioSocketImpl.tryWrite
  [ 8] sun.nio.ch.NioSocketImpl.implWrite
  [ 9] sun.nio.ch.NioSocketImpl.write
  [10] sun.nio.ch.NioSocketImpl$2.write
  [11] java.net.Socket$SocketOutputStream.write
  [12] robaho.net.httpserver.HttpConnection$ActivityTimerOutputStream.write
  [13] java.io.BufferedOutputStream.flushBuffer
  [14] java.io.BufferedOutputStream.implFlush
  [15] java.io.BufferedOutputStream.flush
  [16] java.io.FilterOutputStream.flush
  [17] robaho.net.httpserver.FixedLengthOutputStream.close
  [18] robaho.net.httpserver.PlaceholderOutputStream.close
  [19] benchmarks.Server.lambda$createPlaintextHandler$0
  [20] benchmarks.Server$$Lambda.0x0000000134004ac0.handle
  [21] com.sun.net.httpserver.Filter$Chain.doFilter
  [22] robaho.net.httpserver.AuthFilter.doFilter
  [23] com.sun.net.httpserver.Filter$Chain.doFilter
  [24] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [25] com.sun.net.httpserver.Filter$Chain.doFilter
  [26] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [27] robaho.net.httpserver.ServerImpl$Exchange.run
  [28] jdk.internal.vm.Continuation.enterSpecial
  [29] jdk.internal.vm.Continuation.run
  [30] java.lang.VirtualThread.runContinuation
  [31] java.lang.VirtualThread$$Lambda.0x00000001340b44c0.run
  [32] java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec
  [33] java.util.concurrent.ForkJoinTask.doExec
  [34] java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec
  [35] java.util.concurrent.ForkJoinPool.scan
  [36] java.util.concurrent.ForkJoinPool.runWorker
  [37] java.util.concurrent.ForkJoinWorkerThread.run

--- 2870000 ns (0.05%), 287 samples
  [ 0] robaho.net.httpserver.ExchangeImpl.write
  [ 1] robaho.net.httpserver.ExchangeImpl.sendResponseHeaders
  [ 2] robaho.net.httpserver.HttpExchangeImpl.sendResponseHeaders
  [ 3] benchmarks.Server.lambda$createPlaintextHandler$0
  [ 4] benchmarks.Server$$Lambda.0x0000000134004ac0.handle
  [ 5] com.sun.net.httpserver.Filter$Chain.doFilter
  [ 6] robaho.net.httpserver.AuthFilter.doFilter
  [ 7] com.sun.net.httpserver.Filter$Chain.doFilter
  [ 8] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [ 9] com.sun.net.httpserver.Filter$Chain.doFilter
  [10] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [11] robaho.net.httpserver.ServerImpl$Exchange.run
  [12] jdk.internal.vm.Continuation.enterSpecial
  [13] jdk.internal.vm.Continuation.run
  [14] java.lang.VirtualThread.runContinuation
  [15] java.lang.VirtualThread$$Lambda.0x00000001340b44c0.run
  [16] java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec
  [17] java.util.concurrent.ForkJoinTask.doExec
  [18] java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec
  [19] java.util.concurrent.ForkJoinPool.scan
  [20] java.util.concurrent.ForkJoinPool.runWorker
  [21] java.util.concurrent.ForkJoinWorkerThread.run

--- 2870000 ns (0.05%), 287 samples
  [ 0] robaho.net.httpserver.ExchangeImpl.write
  [ 1] robaho.net.httpserver.ExchangeImpl.sendResponseHeaders
  [ 2] robaho.net.httpserver.HttpExchangeImpl.sendResponseHeaders
  [ 3] benchmarks.Server.lambda$createPlaintextHandler$0
  [ 4] benchmarks.Server$$Lambda.0x0000000134004ac0.handle
  [ 5] com.sun.net.httpserver.Filter$Chain.doFilter
  [ 6] robaho.net.httpserver.AuthFilter.doFilter
  [ 7] com.sun.net.httpserver.Filter$Chain.doFilter
  [ 8] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [ 9] com.sun.net.httpserver.Filter$Chain.doFilter
  [10] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [11] robaho.net.httpserver.ServerImpl$Exchange.run
  [12] jdk.internal.vm.Continuation.enterSpecial
  [13] jdk.internal.vm.Continuation.run
  [14] java.lang.VirtualThread.runContinuation
  [15] java.lang.VirtualThread$$Lambda.0x00000001340b44c0.run
  [16] java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec
  [17] java.util.concurrent.ForkJoinTask.doExec
  [18] java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec
  [19] java.util.concurrent.ForkJoinPool.scan
  [20] java.util.concurrent.ForkJoinPool.runWorker
  [21] java.util.concurrent.ForkJoinWorkerThread.run

--- 2810000 ns (0.05%), 281 samples
  [ 0] robaho.net.httpserver.Request.readLine
  [ 1] robaho.net.httpserver.Request.<init>
  [ 2] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [ 3] robaho.net.httpserver.ServerImpl$Exchange.run
  [ 4] jdk.internal.vm.Continuation.enterSpecial
  [ 5] jdk.internal.vm.Continuation.run
  [ 6] java.lang.VirtualThread.runContinuation
  [ 7] java.lang.VirtualThread$$Lambda.0x00000001340b44c0.run
  [ 8] java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec
  [ 9] java.util.concurrent.ForkJoinTask.doExec
  [10] java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec
  [11] java.util.concurrent.ForkJoinPool.scan
  [12] java.util.concurrent.ForkJoinPool.runWorker
  [13] java.util.concurrent.ForkJoinWorkerThread.run

--- 2790000 ns (0.05%), 279 samples
  [ 0] robaho.net.httpserver.ExchangeImpl.bytes
  [ 1] robaho.net.httpserver.ExchangeImpl.write
  [ 2] robaho.net.httpserver.ExchangeImpl.sendResponseHeaders
  [ 3] robaho.net.httpserver.HttpExchangeImpl.sendResponseHeaders
  [ 4] benchmarks.Server.lambda$createPlaintextHandler$0
  [ 5] benchmarks.Server$$Lambda.0x0000000134004ac0.handle
  [ 6] com.sun.net.httpserver.Filter$Chain.doFilter
  [ 7] robaho.net.httpserver.AuthFilter.doFilter
  [ 8] com.sun.net.httpserver.Filter$Chain.doFilter
  [ 9] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [10] com.sun.net.httpserver.Filter$Chain.doFilter
  [11] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [12] robaho.net.httpserver.ServerImpl$Exchange.run
  [13] jdk.internal.vm.Continuation.enterSpecial
  [14] jdk.internal.vm.Continuation.run
  [15] java.lang.VirtualThread.runContinuation
  [16] java.lang.VirtualThread$$Lambda.0x00000001340b44c0.run
  [17] java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec
  [18] java.util.concurrent.ForkJoinTask.doExec
  [19] java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec
  [20] java.util.concurrent.ForkJoinPool.scan
  [21] java.util.concurrent.ForkJoinPool.runWorker
  [22] java.util.concurrent.ForkJoinWorkerThread.run

--- 2770000 ns (0.05%), 277 samples
  [ 0] Unsafe_Unpark
  [ 1] jdk.internal.misc.Unsafe.unpark
  [ 2] java.util.concurrent.locks.LockSupport.unpark
  [ 3] java.util.concurrent.ForkJoinPool.signalWork
  [ 4] java.util.concurrent.ForkJoinPool$WorkQueue.push
  [ 5] java.util.concurrent.ForkJoinPool.poolSubmit
  [ 6] java.util.concurrent.ForkJoinPool.execute
  [ 7] java.lang.VirtualThread.submitRunContinuation
  [ 8] java.lang.VirtualThread.unpark
  [ 9] java.lang.System$2.unparkVirtualThread
  [10] jdk.internal.misc.VirtualThreads.unpark
  [11] java.util.concurrent.locks.LockSupport.unpark
  [12] sun.nio.ch.Poller.wakeup
  [13] sun.nio.ch.Poller.polled
  [14] sun.nio.ch.KQueuePoller.poll
  [15] sun.nio.ch.Poller.poll
  [16] sun.nio.ch.Poller.pollLoop
  [17] sun.nio.ch.Poller$$Lambda.0x00000001340f1b78.run
  [18] java.lang.Thread.runWith
  [19] java.lang.Thread.run
  [20] jdk.internal.misc.InnocuousThread.run

          ns  percent  samples  top
  ----------  -------  -------  ---
   927730000   17.50%    92773  write
   865420000   16.32%    86542  __psynch_cvwait
   664940000   12.54%    66494  kevent
   532900000   10.05%    53290  swtch_pri
   324830000    6.13%    32483  read
   221610000    4.18%    22161  __psynch_cvsignal
    98940000    1.87%     9894  java.util.concurrent.ForkJoinPool.awaitWork
    58630000    1.11%     5863  jdk.internal.misc.Unsafe.park
    47650000    0.90%     4765  java.util.HashMap.getNode
    44500000    0.84%     4450  com.sun.net.httpserver.Headers.normalize
    39440000    0.74%     3944  sun.nio.ch.KQueue.poll
    35860000    0.68%     3586  java.util.concurrent.ForkJoinPool.scan
    35420000    0.67%     3542  robaho.net.httpserver.Request.<init>
    35290000    0.67%     3529  robaho.net.httpserver.ExchangeImpl.bytes
    31160000    0.59%     3116  robaho.net.httpserver.Request.headers
    25620000    0.48%     2562  _platform_memmove$VARIANT$Haswell
    23450000    0.44%     2345  sun.nio.ch.SocketDispatcher.read0
    23140000    0.44%     2314  sun.nio.ch.SocketDispatcher.write0
    21470000    0.40%     2147  robaho.net.httpserver.Request.readLine
    20030000    0.38%     2003  java.util.HashMap.put
    18600000    0.35%     1860  itable stub
    18530000    0.35%     1853  sun.nio.ch.Poller.registerAsync
    18260000    0.34%     1826  robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
    17400000    0.33%     1740  java.util.HashMap$HashIterator.nextNode
    17210000    0.32%     1721  java.lang.ref.Reference.refersTo
    16840000    0.32%     1684  java.time.format.DateTimeFormatterBuilder$NumberPrinterParser.format
    16090000    0.30%     1609  java.util.concurrent.ConcurrentHashMap.tabAt
    15920000    0.30%     1592  java.lang.Thread.yield0
    15840000    0.30%     1584  Continuation::prepare_thaw
    15400000    0.29%     1540  com.sun.net.httpserver.Headers.checkValue
    14800000    0.28%     1480  JavaThread::rebind_to_jvmti_thread_state_of
    13990000    0.26%     1399  sun.nio.ch.Poller.wakeup
    13940000    0.26%     1394  jbyte_disjoint_arraycopy
    13410000    0.25%     1341  robaho.net.httpserver.ExchangeImpl.write
    12360000    0.23%     1236  java.util.HashMap.putVal
    12210000    0.23%     1221  tlv_get_addr
    12180000    0.23%     1218  robaho.net.httpserver.NoSyncBufferedInputStream.read
    11870000    0.22%     1187  robaho.net.httpserver.ExchangeImpl.sendResponseHeaders
    11420000    0.22%     1142  java.util.concurrent.ConcurrentHashMap.replaceNode
    10930000    0.21%     1093  robaho.net.httpserver.ContextList.findContext
    10800000    0.20%     1080  _pthread_cond_wait
    10710000    0.20%     1071  jdk.internal.misc.Unsafe.unpark
    10610000    0.20%     1061  Parker::park
    10520000    0.20%     1052  G1CollectedHeap::requires_barriers
    10380000    0.20%     1038  java.lang.VirtualThread.unpark
    10160000    0.19%     1016  java.time.format.DateTimeTextProvider.findStore
    10110000    0.19%     1011  jdk.internal.util.Preconditions.checkFromIndexSize
    10000000    0.19%     1000  pthread_mutex_lock
     9530000    0.18%      953  FastThreadsListHandle::FastThreadsListHandle
     9380000    0.18%      938  com.sun.net.httpserver.Headers.put
     9340000    0.18%      934  java.util.HashMap.resize
     9330000    0.18%      933  java.lang.Integer.stringSize
     9190000    0.17%      919  robaho.net.httpserver.LeftOverInputStream.drain
     9060000    0.17%      906  java.lang.StringLatin1.indexOf
     9000000    0.17%      900  JvmtiVTMSTransitionDisabler::start_VTMS_transition
     8880000    0.17%      888  AccessInternal::PostRuntimeDispatch<G1BarrierSet::AccessBarrier<548964ull, G1BarrierSet>, (AccessInternal::BarrierType)0, 548964ull>::oop_access_barrier
     8390000    0.16%      839  java.lang.AbstractStringBuilder.ensureCapacityInternal
     8340000    0.16%      834  robaho.net.httpserver.ExchangeImpl.<init>
     8190000    0.15%      819  java.lang.VirtualThread.yieldContinuation
     8150000    0.15%      815  Config<(oop_kind)0, G1BarrierSet>::freeze
     8130000    0.15%      813  Unsafe_Park
     7970000    0.15%      797  java.util.HashMap$HashIterator.<init>
     7830000    0.15%      783  pthread_mutex_trylock
     7630000    0.14%      763  java.lang.String.hashCode
     7560000    0.14%      756  java.io.BufferedOutputStream.growIfNeeded
     7530000    0.14%      753  sun.nio.ch.NioSocketImpl.write
     7380000    0.14%      738  AccessInternal::PostRuntimeDispatch<G1BarrierSet::AccessBarrier<286822ull, G1BarrierSet>, (AccessInternal::BarrierType)1, 286822ull>::oop_access_barrier
     7320000    0.14%      732  java.util.concurrent.LinkedTransferQueue.xfer
     7180000    0.14%      718  java.util.concurrent.ForkJoinPool.signalWork
     7020000    0.13%      702  java.lang.invoke.VarHandleReferences$FieldInstanceReadWrite.compareAndSet
     6880000    0.13%      688  __commpage_gettimeofday_internal
     6860000    0.13%      686  AccessInternal::PostRuntimeDispatch<G1BarrierSet::AccessBarrier<286822ull, G1BarrierSet>, (AccessInternal::BarrierType)3, 286822ull>::oop_access_barrier
     6780000    0.13%      678  java.util.concurrent.locks.AbstractQueuedSynchronizer.signalNext
     6580000    0.12%      658  Java_sun_nio_ch_SocketDispatcher_write0
     6550000    0.12%      655  com.sun.net.httpserver.Headers.getFirst
     6500000    0.12%      650  AccessInternal::PostRuntimeDispatch<G1BarrierSet::AccessBarrier<548964ull, G1BarrierSet>, (AccessInternal::BarrierType)2, 548964ull>::oop_access_barrier
     6260000    0.12%      626  clock_gettime
     6130000    0.12%      613  HandleMark::initialize
     6080000    0.11%      608  JNIHandles::make_local
     6050000    0.11%      605  java.lang.StringLatin1.toChars
     5980000    0.11%      598  com.sun.net.httpserver.Headers.containsKey
     5970000    0.11%      597  jdk.internal.misc.Unsafe.getAndBitwiseOrInt
     5870000    0.11%      587  __psynch_mutexwait
     5860000    0.11%      586  sched_yield
     5830000    0.11%      583  Unsafe_Unpark
     5790000    0.11%      579  java.lang.System$2.setScopedValueCache
     5770000    0.11%      577  fdval
     5760000    0.11%      576  pthread_cond_signal
     5490000    0.10%      549  mach_absolute_time
     5450000    0.10%      545  pthread_mutex_unlock
     5290000    0.10%      529  sun.nio.ch.KQueue.register
     5180000    0.10%      518  robaho.net.httpserver.AuthFilter.doFilter
     5110000    0.10%      511  jdk.internal.vm.Continuation.yield
     4890000    0.09%      489  com.sun.net.httpserver.Headers.add
     4830000    0.09%      483  Java_sun_nio_ch_KQueue_poll
     4820000    0.09%      482  __commpage_gettimeofday
     4800000    0.09%      480  com.sun.net.httpserver.Filter$Chain.doFilter
     4770000    0.09%      477  Java_sun_nio_ch_SocketDispatcher_read0
     4620000    0.09%      462  robaho.net.httpserver.NoSyncBufferedInputStream.fill
     4610000    0.09%      461  java.util.concurrent.ConcurrentHashMap.addCount
     4570000    0.09%      457  java.util.concurrent.ForkJoinPool$WorkQueue.push
     4550000    0.09%      455  jlong_disjoint_arraycopy
     4530000    0.09%      453  SafeThreadsListPtr::release_stable_list
     4490000    0.08%      449  java_lang_Thread::set_is_in_VTMS_transition
     4480000    0.08%      448  java.lang.StringLatin1.hashCode
     4460000    0.08%      446  jshort_disjoint_arraycopy
     4430000    0.08%      443  java.lang.ThreadLocal.getCarrierThreadLocal
     4430000    0.08%      443  JavaThread::threadObj
     4370000    0.08%      437  java.util.concurrent.ForkJoinPool$WorkQueue.casSlotToNull
     4320000    0.08%      432  java.net.URI.match
     4270000    0.08%      427  SafepointMechanism::update_poll_values
     4220000    0.08%      422  pthread_testcancel
     4210000    0.08%      421  jdk.internal.misc.Unsafe.compareAndSetBoolean
     4170000    0.08%      417  java.lang.CharacterDataLatin1.equalsIgnoreCase
     4100000    0.08%      410  sun.nio.ch.NioSocketImpl.endRead
     4100000    0.08%      410  long* thaw<Config<(oop_kind)0, G1BarrierSet> >
     4070000    0.08%      407  java.util.concurrent.locks.AbstractQueuedSynchronizer.compareAndSetState
     4000000    0.08%      400  java.lang.StringLatin1.toLowerCase
     3890000    0.07%      389  sun.nio.ch.Util$BufferCache.offerFirst
     3890000    0.07%      389  Java_sun_nio_ch_KQueue_register
     3870000    0.07%      387  _pthread_cond_updateval
     3840000    0.07%      384  java.util.LinkedList.linkLast
     3830000    0.07%      383  java.time.format.DateTimePrintContext.adjust
     3770000    0.07%      377  java.util.logging.Logger.isLoggable
     3620000    0.07%      362  SharedRuntime::notify_jvmti_vthread_unmount
     3560000    0.07%      356  HandleMark::~HandleMark
     3550000    0.07%      355  robaho.net.httpserver.Request.consume
     3540000    0.07%      354  java.time.format.DateTimeFormatterBuilder$CompositePrinterParser.format
     3530000    0.07%      353  java.lang.ThreadLocal$ThreadLocalMap.getEntry
     3460000    0.07%      346  java.util.concurrent.locks.ReentrantLock$Sync.lock
     3430000    0.06%      343  JNIHandleBlock::allocate_handle
     3390000    0.06%      339  java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec
     3380000    0.06%      338  robaho.net.httpserver.HttpConnection$ActivityTimerInputStream.read
     3290000    0.06%      329  _pthread_exit_if_canceled
     3270000    0.06%      327  jdk.internal.misc.Unsafe.checkPrimitivePointer
     3250000    0.06%      325  gettimeofday
     3190000    0.06%      319  java.lang.VirtualThread.state
     3160000    0.06%      316  java.lang.VirtualThread.runContinuation
     3160000    0.06%      316  JavaThreadParkedState::JavaThreadParkedState
     3110000    0.06%      311  java.time.format.DateTimeFormatterBuilder$ZoneTextPrinterParser.format
     3090000    0.06%      309  java.util.concurrent.ConcurrentHashMap.casTabAt
     3070000    0.06%      307  __gettimeofday
     3060000    0.06%      306  ZThread::~ZThread
     2990000    0.06%      299  java.net.URI$Parser.scan
     2980000    0.06%      298  java.util.Locale.equals
     2980000    0.06%      298  vtable stub
     2940000    0.06%      294  robaho.net.httpserver.ServerImpl$Exchange.run
     2920000    0.06%      292  jdk.internal.vm.Continuation.doYield
     2910000    0.05%      291  java.lang.StringLatin1.charAt
     2910000    0.05%      291  java.lang.String.isLatin1
     2900000    0.05%      290  FreezeBase::freeze_fast_existing_chunk
     2880000    0.05%      288  java.net.URI$Parser.parse
     2860000    0.05%      286  JNI_OnLoad
     2830000    0.05%      283  convertReturnVal
     2790000    0.05%      279  java_lang_Thread::set_thread_status
     2760000    0.05%      276  SharedRuntime::notify_jvmti_vthread_mount
     2750000    0.05%      275  java.lang.Class.getComponentType
     2730000    0.05%      273  java.lang.VirtualThread.compareAndSetState
     2720000    0.05%      272  vectorizedMismatch
     2710000    0.05%      271  java.util.concurrent.locks.AbstractQueuedSynchronizer.release
     2680000    0.05%      268  java.lang.StringBuffer.toString
     2650000    0.05%      265  JavaThread::set_is_in_VTMS_transition
     2630000    0.05%      263  java.util.concurrent.ForkJoinPool$WorkQueue.tryPoll
     2630000    0.05%      263  java.lang.StringLatin1.regionMatchesCI
     2610000    0.05%      261  java.lang.Integer.getChars
     2590000    0.05%      259  java.util.concurrent.LinkedTransferQueue.awaitMatch
     2590000    0.05%      259  jdk.internal.misc.VM.getNanoTimeAdjustment
     2580000    0.05%      258  sun.nio.ch.Poller$Request.finish
     2580000    0.05%      258  advance_directory.cold.1
     2580000    0.05%      258  java.lang.String.<init>
     2570000    0.05%      257  java.util.concurrent.ConcurrentHashMap.putVal
     2550000    0.05%      255  jbyte_arraycopy
     2540000    0.05%      254  java.util.HashMap.get
     2490000    0.05%      249  java.lang.AbstractStringBuilder.<init>
     2480000    0.05%      248  jint_disjoint_arraycopy
     2420000    0.05%      242  java.time.format.DateTimeFormatterBuilder$CharLiteralPrinterParser.format
     2420000    0.05%      242  jdk.internal.vm.Continuation.yield0
     2420000    0.05%      242  robaho.net.httpserver.HttpExchangeImpl.sendResponseHeaders
     2380000    0.04%      238  java.util.concurrent.LinkedTransferQueue.skipDeadNodesNearHead
     2360000    0.04%      236  java.util.concurrent.ForkJoinPool.runWorker
     2320000    0.04%      232  robaho.net.httpserver.FixedLengthOutputStream.close
     2270000    0.04%      227  os::javaTimeMillis
     2260000    0.04%      226  java.util.concurrent.ConcurrentHashMap.get
     2260000    0.04%      226  int freeze<Config<(oop_kind)0, G1BarrierSet> >
     2240000    0.04%      224  java.lang.ref.Reference.refersToImpl
     2230000    0.04%      223  java.io.FilterOutputStream.flush
     2200000    0.04%      220  java.time.Instant.create
     2200000    0.04%      220  JvmtiThreadState::set_thread
     2180000    0.04%      218  java.lang.Integer.hashCode
     2150000    0.04%      215  _os_semaphore_wait.cold.1
     2100000    0.04%      210  JvmtiVTMSTransitionDisabler::finish_VTMS_transition
     2050000    0.04%      205  semaphore_wait_trap
     2040000    0.04%      204  Thaw<Config<(oop_kind)0, G1BarrierSet> >::thaw_fast
     2040000    0.04%      204  java.util.concurrent.locks.AbstractQueuedSynchronizer.getState
     2040000    0.04%      204  JvmtiVTMSTransitionDisabler::VTMS_vthread_mount
     1970000    0.04%      197  cerror_nocancel
     1960000    0.04%      196  ThreadsListHandle::~ThreadsListHandle
     1950000    0.04%      195  oopDesc::address_field
     1940000    0.04%      194  JVM_GetNanoTimeAdjustment
     1930000    0.04%      193  java.lang.Long.getChars
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/loom-dev/attachments/20240624/26ea520d/attachment-0008.htm>
-------------- next part --------------
--- Execution profile ---
Total samples       : 243127
GC_active           : 234 (0.10%)
unknown_Java        : 1329 (0.55%)
not_walkable_Java   : 1 (0.00%)

--- 181510000 ns (7.47%), 18151 samples
  [ 0] read
  [ 1] sun.nio.ch.SocketDispatcher.read0
  [ 2] sun.nio.ch.SocketDispatcher.read
  [ 3] sun.nio.ch.NioSocketImpl.tryRead
  [ 4] sun.nio.ch.NioSocketImpl.implRead
  [ 5] sun.nio.ch.NioSocketImpl.read
  [ 6] sun.nio.ch.NioSocketImpl$1.read
  [ 7] java.net.Socket$SocketInputStream.read
  [ 8] java.io.FilterInputStream.read
  [ 9] robaho.net.httpserver.HttpConnection$ActivityTimerInputStream.read
  [10] robaho.net.httpserver.NoSyncBufferedInputStream.fill
  [11] robaho.net.httpserver.NoSyncBufferedInputStream.read
  [12] robaho.net.httpserver.Request.readLine
  [13] robaho.net.httpserver.Request.<init>
  [14] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [15] robaho.net.httpserver.ServerImpl$Exchange.run
  [16] java.util.concurrent.ThreadPoolExecutor.runWorker
  [17] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [18] java.lang.Thread.runWith
  [19] java.lang.Thread.run

--- 155670000 ns (6.40%), 15567 samples
  [ 0] read
  [ 1] sun.nio.ch.SocketDispatcher.read0
  [ 2] sun.nio.ch.SocketDispatcher.read
  [ 3] sun.nio.ch.NioSocketImpl.tryRead
  [ 4] sun.nio.ch.NioSocketImpl.implRead
  [ 5] sun.nio.ch.NioSocketImpl.read
  [ 6] sun.nio.ch.NioSocketImpl$1.read
  [ 7] java.net.Socket$SocketInputStream.read
  [ 8] java.io.FilterInputStream.read
  [ 9] robaho.net.httpserver.HttpConnection$ActivityTimerInputStream.read
  [10] robaho.net.httpserver.NoSyncBufferedInputStream.fill
  [11] robaho.net.httpserver.NoSyncBufferedInputStream.read
  [12] robaho.net.httpserver.Request.readLine
  [13] robaho.net.httpserver.Request.<init>
  [14] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [15] robaho.net.httpserver.ServerImpl$Exchange.run
  [16] java.util.concurrent.ThreadPoolExecutor.runWorker
  [17] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [18] java.lang.Thread.runWith
  [19] java.lang.Thread.run

--- 151570000 ns (6.23%), 15157 samples
  [ 0] write
  [ 1] sun.nio.ch.SocketDispatcher.write0
  [ 2] sun.nio.ch.SocketDispatcher.write
  [ 3] sun.nio.ch.NioSocketImpl.tryWrite
  [ 4] sun.nio.ch.NioSocketImpl.implWrite
  [ 5] sun.nio.ch.NioSocketImpl.write
  [ 6] sun.nio.ch.NioSocketImpl$2.write
  [ 7] java.net.Socket$SocketOutputStream.write
  [ 8] robaho.net.httpserver.HttpConnection$ActivityTimerOutputStream.write
  [ 9] java.io.BufferedOutputStream.flushBuffer
  [10] java.io.BufferedOutputStream.implFlush
  [11] java.io.BufferedOutputStream.flush
  [12] java.io.FilterOutputStream.flush
  [13] robaho.net.httpserver.FixedLengthOutputStream.close
  [14] robaho.net.httpserver.PlaceholderOutputStream.close
  [15] benchmarks.Server.lambda$createPlaintextHandler$0
  [16] benchmarks.Server$$Lambda.0x0000000138004ac0.handle
  [17] com.sun.net.httpserver.Filter$Chain.doFilter
  [18] robaho.net.httpserver.AuthFilter.doFilter
  [19] com.sun.net.httpserver.Filter$Chain.doFilter
  [20] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [21] com.sun.net.httpserver.Filter$Chain.doFilter
  [22] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [23] robaho.net.httpserver.ServerImpl$Exchange.run
  [24] java.util.concurrent.ThreadPoolExecutor.runWorker
  [25] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [26] java.lang.Thread.runWith
  [27] java.lang.Thread.run

--- 139710000 ns (5.75%), 13971 samples
  [ 0] write
  [ 1] sun.nio.ch.SocketDispatcher.write0
  [ 2] sun.nio.ch.SocketDispatcher.write
  [ 3] sun.nio.ch.NioSocketImpl.tryWrite
  [ 4] sun.nio.ch.NioSocketImpl.implWrite
  [ 5] sun.nio.ch.NioSocketImpl.write
  [ 6] sun.nio.ch.NioSocketImpl$2.write
  [ 7] java.net.Socket$SocketOutputStream.write
  [ 8] robaho.net.httpserver.HttpConnection$ActivityTimerOutputStream.write
  [ 9] java.io.BufferedOutputStream.flushBuffer
  [10] java.io.BufferedOutputStream.implFlush
  [11] java.io.BufferedOutputStream.flush
  [12] java.io.FilterOutputStream.flush
  [13] robaho.net.httpserver.FixedLengthOutputStream.close
  [14] robaho.net.httpserver.PlaceholderOutputStream.close
  [15] benchmarks.Server.lambda$createPlaintextHandler$0
  [16] benchmarks.Server$$Lambda.0x0000000138004ac0.handle
  [17] com.sun.net.httpserver.Filter$Chain.doFilter
  [18] robaho.net.httpserver.AuthFilter.doFilter
  [19] com.sun.net.httpserver.Filter$Chain.doFilter
  [20] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [21] com.sun.net.httpserver.Filter$Chain.doFilter
  [22] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [23] robaho.net.httpserver.ServerImpl$Exchange.run
  [24] java.util.concurrent.ThreadPoolExecutor.runWorker
  [25] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [26] java.lang.Thread.runWith
  [27] java.lang.Thread.run

--- 78090000 ns (3.21%), 7809 samples
  [ 0] read
  [ 1] sun.nio.ch.SocketDispatcher.read0
  [ 2] sun.nio.ch.SocketDispatcher.read
  [ 3] sun.nio.ch.NioSocketImpl.tryRead
  [ 4] sun.nio.ch.NioSocketImpl.implRead
  [ 5] sun.nio.ch.NioSocketImpl.read
  [ 6] sun.nio.ch.NioSocketImpl$1.read
  [ 7] java.net.Socket$SocketInputStream.read
  [ 8] java.io.FilterInputStream.read
  [ 9] robaho.net.httpserver.HttpConnection$ActivityTimerInputStream.read
  [10] robaho.net.httpserver.NoSyncBufferedInputStream.fill
  [11] robaho.net.httpserver.NoSyncBufferedInputStream.read
  [12] robaho.net.httpserver.Request.readLine
  [13] robaho.net.httpserver.Request.<init>
  [14] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [15] robaho.net.httpserver.ServerImpl$Exchange.run
  [16] java.util.concurrent.ThreadPoolExecutor.runWorker
  [17] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [18] java.lang.Thread.runWith
  [19] java.lang.Thread.run

--- 76740000 ns (3.16%), 7674 samples
  [ 0] write
  [ 1] sun.nio.ch.SocketDispatcher.write0
  [ 2] sun.nio.ch.SocketDispatcher.write
  [ 3] sun.nio.ch.NioSocketImpl.tryWrite
  [ 4] sun.nio.ch.NioSocketImpl.implWrite
  [ 5] sun.nio.ch.NioSocketImpl.write
  [ 6] sun.nio.ch.NioSocketImpl$2.write
  [ 7] java.net.Socket$SocketOutputStream.write
  [ 8] robaho.net.httpserver.HttpConnection$ActivityTimerOutputStream.write
  [ 9] java.io.BufferedOutputStream.flushBuffer
  [10] java.io.BufferedOutputStream.implFlush
  [11] java.io.BufferedOutputStream.flush
  [12] java.io.FilterOutputStream.flush
  [13] robaho.net.httpserver.FixedLengthOutputStream.close
  [14] robaho.net.httpserver.PlaceholderOutputStream.close
  [15] benchmarks.Server.lambda$createPlaintextHandler$0
  [16] benchmarks.Server$$Lambda.0x0000000138004ac0.handle
  [17] com.sun.net.httpserver.Filter$Chain.doFilter
  [18] robaho.net.httpserver.AuthFilter.doFilter
  [19] com.sun.net.httpserver.Filter$Chain.doFilter
  [20] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [21] com.sun.net.httpserver.Filter$Chain.doFilter
  [22] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [23] robaho.net.httpserver.ServerImpl$Exchange.run
  [24] java.util.concurrent.ThreadPoolExecutor.runWorker
  [25] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [26] java.lang.Thread.runWith
  [27] java.lang.Thread.run

--- 64800000 ns (2.67%), 6480 samples
  [ 0] read
  [ 1] sun.nio.ch.SocketDispatcher.read0
  [ 2] sun.nio.ch.SocketDispatcher.read
  [ 3] sun.nio.ch.NioSocketImpl.tryRead
  [ 4] sun.nio.ch.NioSocketImpl.implRead
  [ 5] sun.nio.ch.NioSocketImpl.read
  [ 6] sun.nio.ch.NioSocketImpl$1.read
  [ 7] java.net.Socket$SocketInputStream.read
  [ 8] java.io.FilterInputStream.read
  [ 9] robaho.net.httpserver.HttpConnection$ActivityTimerInputStream.read
  [10] robaho.net.httpserver.NoSyncBufferedInputStream.fill
  [11] robaho.net.httpserver.NoSyncBufferedInputStream.read
  [12] robaho.net.httpserver.Request.readLine
  [13] robaho.net.httpserver.Request.<init>
  [14] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [15] robaho.net.httpserver.ServerImpl$Exchange.run
  [16] java.util.concurrent.ThreadPoolExecutor.runWorker
  [17] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [18] java.lang.Thread.runWith
  [19] java.lang.Thread.run

--- 64310000 ns (2.65%), 6431 samples
  [ 0] read
  [ 1] sun.nio.ch.SocketDispatcher.read0
  [ 2] sun.nio.ch.SocketDispatcher.read
  [ 3] sun.nio.ch.NioSocketImpl.tryRead
  [ 4] sun.nio.ch.NioSocketImpl.implRead
  [ 5] sun.nio.ch.NioSocketImpl.read
  [ 6] sun.nio.ch.NioSocketImpl$1.read
  [ 7] java.net.Socket$SocketInputStream.read
  [ 8] java.io.FilterInputStream.read
  [ 9] robaho.net.httpserver.HttpConnection$ActivityTimerInputStream.read
  [10] robaho.net.httpserver.NoSyncBufferedInputStream.fill
  [11] robaho.net.httpserver.NoSyncBufferedInputStream.read
  [12] robaho.net.httpserver.Request.readLine
  [13] robaho.net.httpserver.Request.<init>
  [14] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [15] robaho.net.httpserver.ServerImpl$Exchange.run
  [16] java.util.concurrent.ThreadPoolExecutor.runWorker
  [17] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [18] java.lang.Thread.runWith
  [19] java.lang.Thread.run

--- 62700000 ns (2.58%), 6270 samples
  [ 0] write
  [ 1] sun.nio.ch.SocketDispatcher.write0
  [ 2] sun.nio.ch.SocketDispatcher.write
  [ 3] sun.nio.ch.NioSocketImpl.tryWrite
  [ 4] sun.nio.ch.NioSocketImpl.implWrite
  [ 5] sun.nio.ch.NioSocketImpl.write
  [ 6] sun.nio.ch.NioSocketImpl$2.write
  [ 7] java.net.Socket$SocketOutputStream.write
  [ 8] robaho.net.httpserver.HttpConnection$ActivityTimerOutputStream.write
  [ 9] java.io.BufferedOutputStream.flushBuffer
  [10] java.io.BufferedOutputStream.implFlush
  [11] java.io.BufferedOutputStream.flush
  [12] java.io.FilterOutputStream.flush
  [13] robaho.net.httpserver.FixedLengthOutputStream.close
  [14] robaho.net.httpserver.PlaceholderOutputStream.close
  [15] benchmarks.Server.lambda$createPlaintextHandler$0
  [16] benchmarks.Server$$Lambda.0x0000000138004ac0.handle
  [17] com.sun.net.httpserver.Filter$Chain.doFilter
  [18] robaho.net.httpserver.AuthFilter.doFilter
  [19] com.sun.net.httpserver.Filter$Chain.doFilter
  [20] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [21] com.sun.net.httpserver.Filter$Chain.doFilter
  [22] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [23] robaho.net.httpserver.ServerImpl$Exchange.run
  [24] java.util.concurrent.ThreadPoolExecutor.runWorker
  [25] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [26] java.lang.Thread.runWith
  [27] java.lang.Thread.run

--- 62650000 ns (2.58%), 6265 samples
  [ 0] read
  [ 1] sun.nio.ch.SocketDispatcher.read0
  [ 2] sun.nio.ch.SocketDispatcher.read
  [ 3] sun.nio.ch.NioSocketImpl.tryRead
  [ 4] sun.nio.ch.NioSocketImpl.implRead
  [ 5] sun.nio.ch.NioSocketImpl.read
  [ 6] sun.nio.ch.NioSocketImpl$1.read
  [ 7] java.net.Socket$SocketInputStream.read
  [ 8] java.io.FilterInputStream.read
  [ 9] robaho.net.httpserver.HttpConnection$ActivityTimerInputStream.read
  [10] robaho.net.httpserver.NoSyncBufferedInputStream.fill
  [11] robaho.net.httpserver.NoSyncBufferedInputStream.read
  [12] robaho.net.httpserver.Request.readLine
  [13] robaho.net.httpserver.Request.<init>
  [14] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [15] robaho.net.httpserver.ServerImpl$Exchange.run
  [16] java.util.concurrent.ThreadPoolExecutor.runWorker
  [17] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [18] java.lang.Thread.runWith
  [19] java.lang.Thread.run

--- 62330000 ns (2.56%), 6233 samples
  [ 0] write
  [ 1] sun.nio.ch.SocketDispatcher.write0
  [ 2] sun.nio.ch.SocketDispatcher.write
  [ 3] sun.nio.ch.NioSocketImpl.tryWrite
  [ 4] sun.nio.ch.NioSocketImpl.implWrite
  [ 5] sun.nio.ch.NioSocketImpl.write
  [ 6] sun.nio.ch.NioSocketImpl$2.write
  [ 7] java.net.Socket$SocketOutputStream.write
  [ 8] robaho.net.httpserver.HttpConnection$ActivityTimerOutputStream.write
  [ 9] java.io.BufferedOutputStream.flushBuffer
  [10] java.io.BufferedOutputStream.implFlush
  [11] java.io.BufferedOutputStream.flush
  [12] java.io.FilterOutputStream.flush
  [13] robaho.net.httpserver.FixedLengthOutputStream.close
  [14] robaho.net.httpserver.PlaceholderOutputStream.close
  [15] benchmarks.Server.lambda$createPlaintextHandler$0
  [16] benchmarks.Server$$Lambda.0x0000000138004ac0.handle
  [17] com.sun.net.httpserver.Filter$Chain.doFilter
  [18] robaho.net.httpserver.AuthFilter.doFilter
  [19] com.sun.net.httpserver.Filter$Chain.doFilter
  [20] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [21] com.sun.net.httpserver.Filter$Chain.doFilter
  [22] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [23] robaho.net.httpserver.ServerImpl$Exchange.run
  [24] java.util.concurrent.ThreadPoolExecutor.runWorker
  [25] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [26] java.lang.Thread.runWith
  [27] java.lang.Thread.run

--- 62320000 ns (2.56%), 6232 samples
  [ 0] write
  [ 1] sun.nio.ch.SocketDispatcher.write0
  [ 2] sun.nio.ch.SocketDispatcher.write
  [ 3] sun.nio.ch.NioSocketImpl.tryWrite
  [ 4] sun.nio.ch.NioSocketImpl.implWrite
  [ 5] sun.nio.ch.NioSocketImpl.write
  [ 6] sun.nio.ch.NioSocketImpl$2.write
  [ 7] java.net.Socket$SocketOutputStream.write
  [ 8] robaho.net.httpserver.HttpConnection$ActivityTimerOutputStream.write
  [ 9] java.io.BufferedOutputStream.flushBuffer
  [10] java.io.BufferedOutputStream.implFlush
  [11] java.io.BufferedOutputStream.flush
  [12] java.io.FilterOutputStream.flush
  [13] robaho.net.httpserver.FixedLengthOutputStream.close
  [14] robaho.net.httpserver.PlaceholderOutputStream.close
  [15] benchmarks.Server.lambda$createPlaintextHandler$0
  [16] benchmarks.Server$$Lambda.0x0000000138004ac0.handle
  [17] com.sun.net.httpserver.Filter$Chain.doFilter
  [18] robaho.net.httpserver.AuthFilter.doFilter
  [19] com.sun.net.httpserver.Filter$Chain.doFilter
  [20] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [21] com.sun.net.httpserver.Filter$Chain.doFilter
  [22] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [23] robaho.net.httpserver.ServerImpl$Exchange.run
  [24] java.util.concurrent.ThreadPoolExecutor.runWorker
  [25] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [26] java.lang.Thread.runWith
  [27] java.lang.Thread.run

--- 52050000 ns (2.14%), 5205 samples
  [ 0] read
  [ 1] sun.nio.ch.SocketDispatcher.read0
  [ 2] sun.nio.ch.SocketDispatcher.read
  [ 3] sun.nio.ch.NioSocketImpl.tryRead
  [ 4] sun.nio.ch.NioSocketImpl.implRead
  [ 5] sun.nio.ch.NioSocketImpl.read
  [ 6] sun.nio.ch.NioSocketImpl$1.read
  [ 7] java.net.Socket$SocketInputStream.read
  [ 8] java.io.FilterInputStream.read
  [ 9] robaho.net.httpserver.HttpConnection$ActivityTimerInputStream.read
  [10] robaho.net.httpserver.NoSyncBufferedInputStream.fill
  [11] robaho.net.httpserver.NoSyncBufferedInputStream.read
  [12] robaho.net.httpserver.Request.readLine
  [13] robaho.net.httpserver.Request.<init>
  [14] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [15] robaho.net.httpserver.ServerImpl$Exchange.run
  [16] java.util.concurrent.ThreadPoolExecutor.runWorker
  [17] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [18] java.lang.Thread.runWith
  [19] java.lang.Thread.run

--- 51700000 ns (2.13%), 5170 samples
  [ 0] read
  [ 1] sun.nio.ch.SocketDispatcher.read0
  [ 2] sun.nio.ch.SocketDispatcher.read
  [ 3] sun.nio.ch.NioSocketImpl.tryRead
  [ 4] sun.nio.ch.NioSocketImpl.implRead
  [ 5] sun.nio.ch.NioSocketImpl.read
  [ 6] sun.nio.ch.NioSocketImpl$1.read
  [ 7] java.net.Socket$SocketInputStream.read
  [ 8] java.io.FilterInputStream.read
  [ 9] robaho.net.httpserver.HttpConnection$ActivityTimerInputStream.read
  [10] robaho.net.httpserver.NoSyncBufferedInputStream.fill
  [11] robaho.net.httpserver.NoSyncBufferedInputStream.read
  [12] robaho.net.httpserver.Request.readLine
  [13] robaho.net.httpserver.Request.<init>
  [14] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [15] robaho.net.httpserver.ServerImpl$Exchange.run
  [16] java.util.concurrent.ThreadPoolExecutor.runWorker
  [17] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [18] java.lang.Thread.runWith
  [19] java.lang.Thread.run

--- 51240000 ns (2.11%), 5124 samples
  [ 0] write
  [ 1] sun.nio.ch.SocketDispatcher.write0
  [ 2] sun.nio.ch.SocketDispatcher.write
  [ 3] sun.nio.ch.NioSocketImpl.tryWrite
  [ 4] sun.nio.ch.NioSocketImpl.implWrite
  [ 5] sun.nio.ch.NioSocketImpl.write
  [ 6] sun.nio.ch.NioSocketImpl$2.write
  [ 7] java.net.Socket$SocketOutputStream.write
  [ 8] robaho.net.httpserver.HttpConnection$ActivityTimerOutputStream.write
  [ 9] java.io.BufferedOutputStream.flushBuffer
  [10] java.io.BufferedOutputStream.implFlush
  [11] java.io.BufferedOutputStream.flush
  [12] java.io.FilterOutputStream.flush
  [13] robaho.net.httpserver.FixedLengthOutputStream.close
  [14] robaho.net.httpserver.PlaceholderOutputStream.close
  [15] benchmarks.Server.lambda$createPlaintextHandler$0
  [16] benchmarks.Server$$Lambda.0x0000000138004ac0.handle
  [17] com.sun.net.httpserver.Filter$Chain.doFilter
  [18] robaho.net.httpserver.AuthFilter.doFilter
  [19] com.sun.net.httpserver.Filter$Chain.doFilter
  [20] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [21] com.sun.net.httpserver.Filter$Chain.doFilter
  [22] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [23] robaho.net.httpserver.ServerImpl$Exchange.run
  [24] java.util.concurrent.ThreadPoolExecutor.runWorker
  [25] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [26] java.lang.Thread.runWith
  [27] java.lang.Thread.run

--- 50930000 ns (2.09%), 5093 samples
  [ 0] read
  [ 1] sun.nio.ch.SocketDispatcher.read0
  [ 2] sun.nio.ch.SocketDispatcher.read
  [ 3] sun.nio.ch.NioSocketImpl.tryRead
  [ 4] sun.nio.ch.NioSocketImpl.implRead
  [ 5] sun.nio.ch.NioSocketImpl.read
  [ 6] sun.nio.ch.NioSocketImpl$1.read
  [ 7] java.net.Socket$SocketInputStream.read
  [ 8] java.io.FilterInputStream.read
  [ 9] robaho.net.httpserver.HttpConnection$ActivityTimerInputStream.read
  [10] robaho.net.httpserver.NoSyncBufferedInputStream.fill
  [11] robaho.net.httpserver.NoSyncBufferedInputStream.read
  [12] robaho.net.httpserver.Request.readLine
  [13] robaho.net.httpserver.Request.<init>
  [14] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [15] robaho.net.httpserver.ServerImpl$Exchange.run
  [16] java.util.concurrent.ThreadPoolExecutor.runWorker
  [17] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [18] java.lang.Thread.runWith
  [19] java.lang.Thread.run

--- 50550000 ns (2.08%), 5055 samples
  [ 0] write
  [ 1] sun.nio.ch.SocketDispatcher.write0
  [ 2] sun.nio.ch.SocketDispatcher.write
  [ 3] sun.nio.ch.NioSocketImpl.tryWrite
  [ 4] sun.nio.ch.NioSocketImpl.implWrite
  [ 5] sun.nio.ch.NioSocketImpl.write
  [ 6] sun.nio.ch.NioSocketImpl$2.write
  [ 7] java.net.Socket$SocketOutputStream.write
  [ 8] robaho.net.httpserver.HttpConnection$ActivityTimerOutputStream.write
  [ 9] java.io.BufferedOutputStream.flushBuffer
  [10] java.io.BufferedOutputStream.implFlush
  [11] java.io.BufferedOutputStream.flush
  [12] java.io.FilterOutputStream.flush
  [13] robaho.net.httpserver.FixedLengthOutputStream.close
  [14] robaho.net.httpserver.PlaceholderOutputStream.close
  [15] benchmarks.Server.lambda$createPlaintextHandler$0
  [16] benchmarks.Server$$Lambda.0x0000000138004ac0.handle
  [17] com.sun.net.httpserver.Filter$Chain.doFilter
  [18] robaho.net.httpserver.AuthFilter.doFilter
  [19] com.sun.net.httpserver.Filter$Chain.doFilter
  [20] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [21] com.sun.net.httpserver.Filter$Chain.doFilter
  [22] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [23] robaho.net.httpserver.ServerImpl$Exchange.run
  [24] java.util.concurrent.ThreadPoolExecutor.runWorker
  [25] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [26] java.lang.Thread.runWith
  [27] java.lang.Thread.run

--- 50400000 ns (2.07%), 5040 samples
  [ 0] write
  [ 1] sun.nio.ch.SocketDispatcher.write0
  [ 2] sun.nio.ch.SocketDispatcher.write
  [ 3] sun.nio.ch.NioSocketImpl.tryWrite
  [ 4] sun.nio.ch.NioSocketImpl.implWrite
  [ 5] sun.nio.ch.NioSocketImpl.write
  [ 6] sun.nio.ch.NioSocketImpl$2.write
  [ 7] java.net.Socket$SocketOutputStream.write
  [ 8] robaho.net.httpserver.HttpConnection$ActivityTimerOutputStream.write
  [ 9] java.io.BufferedOutputStream.flushBuffer
  [10] java.io.BufferedOutputStream.implFlush
  [11] java.io.BufferedOutputStream.flush
  [12] java.io.FilterOutputStream.flush
  [13] robaho.net.httpserver.FixedLengthOutputStream.close
  [14] robaho.net.httpserver.PlaceholderOutputStream.close
  [15] benchmarks.Server.lambda$createPlaintextHandler$0
  [16] benchmarks.Server$$Lambda.0x0000000138004ac0.handle
  [17] com.sun.net.httpserver.Filter$Chain.doFilter
  [18] robaho.net.httpserver.AuthFilter.doFilter
  [19] com.sun.net.httpserver.Filter$Chain.doFilter
  [20] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [21] com.sun.net.httpserver.Filter$Chain.doFilter
  [22] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [23] robaho.net.httpserver.ServerImpl$Exchange.run
  [24] java.util.concurrent.ThreadPoolExecutor.runWorker
  [25] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [26] java.lang.Thread.runWith
  [27] java.lang.Thread.run

--- 39170000 ns (1.61%), 3917 samples
  [ 0] read
  [ 1] sun.nio.ch.SocketDispatcher.read0
  [ 2] sun.nio.ch.SocketDispatcher.read
  [ 3] sun.nio.ch.NioSocketImpl.tryRead
  [ 4] sun.nio.ch.NioSocketImpl.implRead
  [ 5] sun.nio.ch.NioSocketImpl.read
  [ 6] sun.nio.ch.NioSocketImpl$1.read
  [ 7] java.net.Socket$SocketInputStream.read
  [ 8] java.io.FilterInputStream.read
  [ 9] robaho.net.httpserver.HttpConnection$ActivityTimerInputStream.read
  [10] robaho.net.httpserver.NoSyncBufferedInputStream.fill
  [11] robaho.net.httpserver.NoSyncBufferedInputStream.read
  [12] robaho.net.httpserver.Request.readLine
  [13] robaho.net.httpserver.Request.<init>
  [14] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [15] robaho.net.httpserver.ServerImpl$Exchange.run
  [16] java.util.concurrent.ThreadPoolExecutor.runWorker
  [17] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [18] java.lang.Thread.runWith
  [19] java.lang.Thread.run

--- 38470000 ns (1.58%), 3847 samples
  [ 0] write
  [ 1] sun.nio.ch.SocketDispatcher.write0
  [ 2] sun.nio.ch.SocketDispatcher.write
  [ 3] sun.nio.ch.NioSocketImpl.tryWrite
  [ 4] sun.nio.ch.NioSocketImpl.implWrite
  [ 5] sun.nio.ch.NioSocketImpl.write
  [ 6] sun.nio.ch.NioSocketImpl$2.write
  [ 7] java.net.Socket$SocketOutputStream.write
  [ 8] robaho.net.httpserver.HttpConnection$ActivityTimerOutputStream.write
  [ 9] java.io.BufferedOutputStream.flushBuffer
  [10] java.io.BufferedOutputStream.implFlush
  [11] java.io.BufferedOutputStream.flush
  [12] java.io.FilterOutputStream.flush
  [13] robaho.net.httpserver.FixedLengthOutputStream.close
  [14] robaho.net.httpserver.PlaceholderOutputStream.close
  [15] benchmarks.Server.lambda$createPlaintextHandler$0
  [16] benchmarks.Server$$Lambda.0x0000000138004ac0.handle
  [17] com.sun.net.httpserver.Filter$Chain.doFilter
  [18] robaho.net.httpserver.AuthFilter.doFilter
  [19] com.sun.net.httpserver.Filter$Chain.doFilter
  [20] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [21] com.sun.net.httpserver.Filter$Chain.doFilter
  [22] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [23] robaho.net.httpserver.ServerImpl$Exchange.run
  [24] java.util.concurrent.ThreadPoolExecutor.runWorker
  [25] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [26] java.lang.Thread.runWith
  [27] java.lang.Thread.run

--- 37610000 ns (1.55%), 3761 samples
  [ 0] write
  [ 1] sun.nio.ch.SocketDispatcher.write0
  [ 2] sun.nio.ch.SocketDispatcher.write
  [ 3] sun.nio.ch.NioSocketImpl.tryWrite
  [ 4] sun.nio.ch.NioSocketImpl.implWrite
  [ 5] sun.nio.ch.NioSocketImpl.write
  [ 6] sun.nio.ch.NioSocketImpl$2.write
  [ 7] java.net.Socket$SocketOutputStream.write
  [ 8] robaho.net.httpserver.HttpConnection$ActivityTimerOutputStream.write
  [ 9] java.io.BufferedOutputStream.flushBuffer
  [10] java.io.BufferedOutputStream.implFlush
  [11] java.io.BufferedOutputStream.flush
  [12] java.io.FilterOutputStream.flush
  [13] robaho.net.httpserver.FixedLengthOutputStream.close
  [14] robaho.net.httpserver.PlaceholderOutputStream.close
  [15] benchmarks.Server.lambda$createPlaintextHandler$0
  [16] benchmarks.Server$$Lambda.0x0000000138004ac0.handle
  [17] com.sun.net.httpserver.Filter$Chain.doFilter
  [18] robaho.net.httpserver.AuthFilter.doFilter
  [19] com.sun.net.httpserver.Filter$Chain.doFilter
  [20] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [21] com.sun.net.httpserver.Filter$Chain.doFilter
  [22] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [23] robaho.net.httpserver.ServerImpl$Exchange.run
  [24] java.util.concurrent.ThreadPoolExecutor.runWorker
  [25] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [26] java.lang.Thread.runWith
  [27] java.lang.Thread.run

--- 26150000 ns (1.08%), 2615 samples
  [ 0] read
  [ 1] sun.nio.ch.SocketDispatcher.read0
  [ 2] sun.nio.ch.SocketDispatcher.read
  [ 3] sun.nio.ch.NioSocketImpl.tryRead
  [ 4] sun.nio.ch.NioSocketImpl.implRead
  [ 5] sun.nio.ch.NioSocketImpl.read
  [ 6] sun.nio.ch.NioSocketImpl$1.read
  [ 7] java.net.Socket$SocketInputStream.read
  [ 8] java.io.FilterInputStream.read
  [ 9] robaho.net.httpserver.HttpConnection$ActivityTimerInputStream.read
  [10] robaho.net.httpserver.NoSyncBufferedInputStream.fill
  [11] robaho.net.httpserver.NoSyncBufferedInputStream.read
  [12] robaho.net.httpserver.Request.readLine
  [13] robaho.net.httpserver.Request.<init>
  [14] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [15] robaho.net.httpserver.ServerImpl$Exchange.run
  [16] java.util.concurrent.ThreadPoolExecutor.runWorker
  [17] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [18] java.lang.Thread.runWith
  [19] java.lang.Thread.run

--- 25590000 ns (1.05%), 2559 samples
  [ 0] write
  [ 1] sun.nio.ch.SocketDispatcher.write0
  [ 2] sun.nio.ch.SocketDispatcher.write
  [ 3] sun.nio.ch.NioSocketImpl.tryWrite
  [ 4] sun.nio.ch.NioSocketImpl.implWrite
  [ 5] sun.nio.ch.NioSocketImpl.write
  [ 6] sun.nio.ch.NioSocketImpl$2.write
  [ 7] java.net.Socket$SocketOutputStream.write
  [ 8] robaho.net.httpserver.HttpConnection$ActivityTimerOutputStream.write
  [ 9] java.io.BufferedOutputStream.flushBuffer
  [10] java.io.BufferedOutputStream.implFlush
  [11] java.io.BufferedOutputStream.flush
  [12] java.io.FilterOutputStream.flush
  [13] robaho.net.httpserver.FixedLengthOutputStream.close
  [14] robaho.net.httpserver.PlaceholderOutputStream.close
  [15] benchmarks.Server.lambda$createPlaintextHandler$0
  [16] benchmarks.Server$$Lambda.0x0000000138004ac0.handle
  [17] com.sun.net.httpserver.Filter$Chain.doFilter
  [18] robaho.net.httpserver.AuthFilter.doFilter
  [19] com.sun.net.httpserver.Filter$Chain.doFilter
  [20] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [21] com.sun.net.httpserver.Filter$Chain.doFilter
  [22] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [23] robaho.net.httpserver.ServerImpl$Exchange.run
  [24] java.util.concurrent.ThreadPoolExecutor.runWorker
  [25] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [26] java.lang.Thread.runWith
  [27] java.lang.Thread.run

--- 11320000 ns (0.47%), 1132 samples
  [ 0] sun.nio.ch.SocketDispatcher.read0
  [ 1] sun.nio.ch.SocketDispatcher.read
  [ 2] sun.nio.ch.NioSocketImpl.tryRead
  [ 3] sun.nio.ch.NioSocketImpl.implRead
  [ 4] sun.nio.ch.NioSocketImpl.read
  [ 5] sun.nio.ch.NioSocketImpl$1.read
  [ 6] java.net.Socket$SocketInputStream.read
  [ 7] java.io.FilterInputStream.read
  [ 8] robaho.net.httpserver.HttpConnection$ActivityTimerInputStream.read
  [ 9] robaho.net.httpserver.NoSyncBufferedInputStream.fill
  [10] robaho.net.httpserver.NoSyncBufferedInputStream.read
  [11] robaho.net.httpserver.Request.readLine
  [12] robaho.net.httpserver.Request.<init>
  [13] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [14] robaho.net.httpserver.ServerImpl$Exchange.run
  [15] java.util.concurrent.ThreadPoolExecutor.runWorker
  [16] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [17] java.lang.Thread.runWith
  [18] java.lang.Thread.run

--- 10360000 ns (0.43%), 1036 samples
  [ 0] sun.nio.ch.SocketDispatcher.read0
  [ 1] sun.nio.ch.SocketDispatcher.read
  [ 2] sun.nio.ch.NioSocketImpl.tryRead
  [ 3] sun.nio.ch.NioSocketImpl.implRead
  [ 4] sun.nio.ch.NioSocketImpl.read
  [ 5] sun.nio.ch.NioSocketImpl$1.read
  [ 6] java.net.Socket$SocketInputStream.read
  [ 7] java.io.FilterInputStream.read
  [ 8] robaho.net.httpserver.HttpConnection$ActivityTimerInputStream.read
  [ 9] robaho.net.httpserver.NoSyncBufferedInputStream.fill
  [10] robaho.net.httpserver.NoSyncBufferedInputStream.read
  [11] robaho.net.httpserver.Request.readLine
  [12] robaho.net.httpserver.Request.<init>
  [13] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [14] robaho.net.httpserver.ServerImpl$Exchange.run
  [15] java.util.concurrent.ThreadPoolExecutor.runWorker
  [16] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [17] java.lang.Thread.runWith
  [18] java.lang.Thread.run

--- 5750000 ns (0.24%), 575 samples
  [ 0] robaho.net.httpserver.NoSyncBufferedInputStream.getBufIfOpen
  [ 1] robaho.net.httpserver.NoSyncBufferedInputStream.read
  [ 2] robaho.net.httpserver.Request.readLine
  [ 3] robaho.net.httpserver.Request.<init>
  [ 4] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [ 5] robaho.net.httpserver.ServerImpl$Exchange.run
  [ 6] java.util.concurrent.ThreadPoolExecutor.runWorker
  [ 7] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [ 8] java.lang.Thread.runWith
  [ 9] java.lang.Thread.run

--- 5270000 ns (0.22%), 527 samples
  [ 0] java.lang.StringBuffer.<init>
  [ 1] robaho.net.httpserver.Request.readLine
  [ 2] robaho.net.httpserver.Request.<init>
  [ 3] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [ 4] robaho.net.httpserver.ServerImpl$Exchange.run
  [ 5] java.util.concurrent.ThreadPoolExecutor.runWorker
  [ 6] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [ 7] java.lang.Thread.runWith
  [ 8] java.lang.Thread.run

--- 5210000 ns (0.21%), 521 samples
  [ 0] java.lang.StringBuffer.<init>
  [ 1] robaho.net.httpserver.Request.readLine
  [ 2] robaho.net.httpserver.Request.<init>
  [ 3] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [ 4] robaho.net.httpserver.ServerImpl$Exchange.run
  [ 5] java.util.concurrent.ThreadPoolExecutor.runWorker
  [ 6] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [ 7] java.lang.Thread.runWith
  [ 8] java.lang.Thread.run

--- 5110000 ns (0.21%), 511 samples
  [ 0] java.net.URI.<init>
  [ 1] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [ 2] robaho.net.httpserver.ServerImpl$Exchange.run
  [ 3] java.util.concurrent.ThreadPoolExecutor.runWorker
  [ 4] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [ 5] java.lang.Thread.runWith
  [ 6] java.lang.Thread.run

--- 5080000 ns (0.21%), 508 samples
  [ 0] sun.nio.ch.SocketDispatcher.read0
  [ 1] sun.nio.ch.SocketDispatcher.read
  [ 2] sun.nio.ch.NioSocketImpl.tryRead
  [ 3] sun.nio.ch.NioSocketImpl.implRead
  [ 4] sun.nio.ch.NioSocketImpl.read
  [ 5] sun.nio.ch.NioSocketImpl$1.read
  [ 6] java.net.Socket$SocketInputStream.read
  [ 7] java.io.FilterInputStream.read
  [ 8] robaho.net.httpserver.HttpConnection$ActivityTimerInputStream.read
  [ 9] robaho.net.httpserver.NoSyncBufferedInputStream.fill
  [10] robaho.net.httpserver.NoSyncBufferedInputStream.read
  [11] robaho.net.httpserver.Request.readLine
  [12] robaho.net.httpserver.Request.<init>
  [13] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [14] robaho.net.httpserver.ServerImpl$Exchange.run
  [15] java.util.concurrent.ThreadPoolExecutor.runWorker
  [16] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [17] java.lang.Thread.runWith
  [18] java.lang.Thread.run

--- 4790000 ns (0.20%), 479 samples
  [ 0] robaho.net.httpserver.NoSyncBufferedInputStream.getBufIfOpen
  [ 1] robaho.net.httpserver.NoSyncBufferedInputStream.read
  [ 2] robaho.net.httpserver.Request.readLine
  [ 3] robaho.net.httpserver.Request.<init>
  [ 4] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [ 5] robaho.net.httpserver.ServerImpl$Exchange.run
  [ 6] java.util.concurrent.ThreadPoolExecutor.runWorker
  [ 7] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [ 8] java.lang.Thread.runWith
  [ 9] java.lang.Thread.run

--- 4580000 ns (0.19%), 458 samples
  [ 0] sun.nio.ch.SocketDispatcher.read0
  [ 1] sun.nio.ch.SocketDispatcher.read
  [ 2] sun.nio.ch.NioSocketImpl.tryRead
  [ 3] sun.nio.ch.NioSocketImpl.implRead
  [ 4] sun.nio.ch.NioSocketImpl.read
  [ 5] sun.nio.ch.NioSocketImpl$1.read
  [ 6] java.net.Socket$SocketInputStream.read
  [ 7] java.io.FilterInputStream.read
  [ 8] robaho.net.httpserver.HttpConnection$ActivityTimerInputStream.read
  [ 9] robaho.net.httpserver.NoSyncBufferedInputStream.fill
  [10] robaho.net.httpserver.NoSyncBufferedInputStream.read
  [11] robaho.net.httpserver.Request.readLine
  [12] robaho.net.httpserver.Request.<init>
  [13] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [14] robaho.net.httpserver.ServerImpl$Exchange.run
  [15] java.util.concurrent.ThreadPoolExecutor.runWorker
  [16] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [17] java.lang.Thread.runWith
  [18] java.lang.Thread.run

--- 4360000 ns (0.18%), 436 samples
  [ 0] sun.nio.ch.SocketDispatcher.read0
  [ 1] sun.nio.ch.SocketDispatcher.read
  [ 2] sun.nio.ch.NioSocketImpl.tryRead
  [ 3] sun.nio.ch.NioSocketImpl.implRead
  [ 4] sun.nio.ch.NioSocketImpl.read
  [ 5] sun.nio.ch.NioSocketImpl$1.read
  [ 6] java.net.Socket$SocketInputStream.read
  [ 7] java.io.FilterInputStream.read
  [ 8] robaho.net.httpserver.HttpConnection$ActivityTimerInputStream.read
  [ 9] robaho.net.httpserver.NoSyncBufferedInputStream.fill
  [10] robaho.net.httpserver.NoSyncBufferedInputStream.read
  [11] robaho.net.httpserver.Request.readLine
  [12] robaho.net.httpserver.Request.<init>
  [13] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [14] robaho.net.httpserver.ServerImpl$Exchange.run
  [15] java.util.concurrent.ThreadPoolExecutor.runWorker
  [16] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [17] java.lang.Thread.runWith
  [18] java.lang.Thread.run

--- 4280000 ns (0.18%), 428 samples
  [ 0] sun.nio.ch.SocketDispatcher.read0
  [ 1] sun.nio.ch.SocketDispatcher.read
  [ 2] sun.nio.ch.NioSocketImpl.tryRead
  [ 3] sun.nio.ch.NioSocketImpl.implRead
  [ 4] sun.nio.ch.NioSocketImpl.read
  [ 5] sun.nio.ch.NioSocketImpl$1.read
  [ 6] java.net.Socket$SocketInputStream.read
  [ 7] java.io.FilterInputStream.read
  [ 8] robaho.net.httpserver.HttpConnection$ActivityTimerInputStream.read
  [ 9] robaho.net.httpserver.NoSyncBufferedInputStream.fill
  [10] robaho.net.httpserver.NoSyncBufferedInputStream.read
  [11] robaho.net.httpserver.Request.readLine
  [12] robaho.net.httpserver.Request.<init>
  [13] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [14] robaho.net.httpserver.ServerImpl$Exchange.run
  [15] java.util.concurrent.ThreadPoolExecutor.runWorker
  [16] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [17] java.lang.Thread.runWith
  [18] java.lang.Thread.run

--- 3600000 ns (0.15%), 360 samples
  [ 0] itable stub
  [ 1] java.time.format.DateTimeFormatterBuilder$CompositePrinterParser.format
  [ 2] java.time.format.DateTimeFormatter.formatTo
  [ 3] java.time.format.DateTimeFormatter.format
  [ 4] robaho.net.httpserver.ExchangeImpl.sendResponseHeaders
  [ 5] robaho.net.httpserver.HttpExchangeImpl.sendResponseHeaders
  [ 6] benchmarks.Server.lambda$createPlaintextHandler$0
  [ 7] benchmarks.Server$$Lambda.0x0000000138004ac0.handle
  [ 8] com.sun.net.httpserver.Filter$Chain.doFilter
  [ 9] robaho.net.httpserver.AuthFilter.doFilter
  [10] com.sun.net.httpserver.Filter$Chain.doFilter
  [11] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [12] com.sun.net.httpserver.Filter$Chain.doFilter
  [13] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [14] robaho.net.httpserver.ServerImpl$Exchange.run
  [15] java.util.concurrent.ThreadPoolExecutor.runWorker
  [16] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [17] java.lang.Thread.runWith
  [18] java.lang.Thread.run

--- 3530000 ns (0.15%), 353 samples
  [ 0] sun.nio.ch.SocketDispatcher.write0
  [ 1] sun.nio.ch.SocketDispatcher.write
  [ 2] sun.nio.ch.NioSocketImpl.tryWrite
  [ 3] sun.nio.ch.NioSocketImpl.implWrite
  [ 4] sun.nio.ch.NioSocketImpl.write
  [ 5] sun.nio.ch.NioSocketImpl$2.write
  [ 6] java.net.Socket$SocketOutputStream.write
  [ 7] robaho.net.httpserver.HttpConnection$ActivityTimerOutputStream.write
  [ 8] java.io.BufferedOutputStream.flushBuffer
  [ 9] java.io.BufferedOutputStream.implFlush
  [10] java.io.BufferedOutputStream.flush
  [11] java.io.FilterOutputStream.flush
  [12] robaho.net.httpserver.FixedLengthOutputStream.close
  [13] robaho.net.httpserver.PlaceholderOutputStream.close
  [14] benchmarks.Server.lambda$createPlaintextHandler$0
  [15] benchmarks.Server$$Lambda.0x0000000138004ac0.handle
  [16] com.sun.net.httpserver.Filter$Chain.doFilter
  [17] robaho.net.httpserver.AuthFilter.doFilter
  [18] com.sun.net.httpserver.Filter$Chain.doFilter
  [19] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [20] com.sun.net.httpserver.Filter$Chain.doFilter
  [21] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [22] robaho.net.httpserver.ServerImpl$Exchange.run
  [23] java.util.concurrent.ThreadPoolExecutor.runWorker
  [24] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [25] java.lang.Thread.runWith
  [26] java.lang.Thread.run

--- 3440000 ns (0.14%), 344 samples
  [ 0] java.net.URI.<init>
  [ 1] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [ 2] robaho.net.httpserver.ServerImpl$Exchange.run
  [ 3] java.util.concurrent.ThreadPoolExecutor.runWorker
  [ 4] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [ 5] java.lang.Thread.runWith
  [ 6] java.lang.Thread.run

--- 3390000 ns (0.14%), 339 samples
  [ 0] robaho.net.httpserver.ExchangeImpl.bytes
  [ 1] robaho.net.httpserver.ExchangeImpl.write
  [ 2] robaho.net.httpserver.ExchangeImpl.sendResponseHeaders
  [ 3] robaho.net.httpserver.HttpExchangeImpl.sendResponseHeaders
  [ 4] benchmarks.Server.lambda$createPlaintextHandler$0
  [ 5] benchmarks.Server$$Lambda.0x0000000138004ac0.handle
  [ 6] com.sun.net.httpserver.Filter$Chain.doFilter
  [ 7] robaho.net.httpserver.AuthFilter.doFilter
  [ 8] com.sun.net.httpserver.Filter$Chain.doFilter
  [ 9] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [10] com.sun.net.httpserver.Filter$Chain.doFilter
  [11] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [12] robaho.net.httpserver.ServerImpl$Exchange.run
  [13] java.util.concurrent.ThreadPoolExecutor.runWorker
  [14] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [15] java.lang.Thread.runWith
  [16] java.lang.Thread.run

--- 3360000 ns (0.14%), 336 samples
  [ 0] sun.nio.ch.SocketDispatcher.read0
  [ 1] sun.nio.ch.SocketDispatcher.read
  [ 2] sun.nio.ch.NioSocketImpl.tryRead
  [ 3] sun.nio.ch.NioSocketImpl.implRead
  [ 4] sun.nio.ch.NioSocketImpl.read
  [ 5] sun.nio.ch.NioSocketImpl$1.read
  [ 6] java.net.Socket$SocketInputStream.read
  [ 7] java.io.FilterInputStream.read
  [ 8] robaho.net.httpserver.HttpConnection$ActivityTimerInputStream.read
  [ 9] robaho.net.httpserver.NoSyncBufferedInputStream.fill
  [10] robaho.net.httpserver.NoSyncBufferedInputStream.read
  [11] robaho.net.httpserver.Request.readLine
  [12] robaho.net.httpserver.Request.<init>
  [13] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [14] robaho.net.httpserver.ServerImpl$Exchange.run
  [15] java.util.concurrent.ThreadPoolExecutor.runWorker
  [16] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [17] java.lang.Thread.runWith
  [18] java.lang.Thread.run

--- 3350000 ns (0.14%), 335 samples
  [ 0] sun.nio.ch.SocketDispatcher.read0
  [ 1] sun.nio.ch.SocketDispatcher.read
  [ 2] sun.nio.ch.NioSocketImpl.tryRead
  [ 3] sun.nio.ch.NioSocketImpl.implRead
  [ 4] sun.nio.ch.NioSocketImpl.read
  [ 5] sun.nio.ch.NioSocketImpl$1.read
  [ 6] java.net.Socket$SocketInputStream.read
  [ 7] java.io.FilterInputStream.read
  [ 8] robaho.net.httpserver.HttpConnection$ActivityTimerInputStream.read
  [ 9] robaho.net.httpserver.NoSyncBufferedInputStream.fill
  [10] robaho.net.httpserver.NoSyncBufferedInputStream.read
  [11] robaho.net.httpserver.Request.readLine
  [12] robaho.net.httpserver.Request.<init>
  [13] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [14] robaho.net.httpserver.ServerImpl$Exchange.run
  [15] java.util.concurrent.ThreadPoolExecutor.runWorker
  [16] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [17] java.lang.Thread.runWith
  [18] java.lang.Thread.run

--- 3210000 ns (0.13%), 321 samples
  [ 0] sun.nio.ch.SocketDispatcher.read0
  [ 1] sun.nio.ch.SocketDispatcher.read
  [ 2] sun.nio.ch.NioSocketImpl.tryRead
  [ 3] sun.nio.ch.NioSocketImpl.implRead
  [ 4] sun.nio.ch.NioSocketImpl.read
  [ 5] sun.nio.ch.NioSocketImpl$1.read
  [ 6] java.net.Socket$SocketInputStream.read
  [ 7] java.io.FilterInputStream.read
  [ 8] robaho.net.httpserver.HttpConnection$ActivityTimerInputStream.read
  [ 9] robaho.net.httpserver.NoSyncBufferedInputStream.fill
  [10] robaho.net.httpserver.NoSyncBufferedInputStream.read
  [11] robaho.net.httpserver.Request.readLine
  [12] robaho.net.httpserver.Request.<init>
  [13] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [14] robaho.net.httpserver.ServerImpl$Exchange.run
  [15] java.util.concurrent.ThreadPoolExecutor.runWorker
  [16] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [17] java.lang.Thread.runWith
  [18] java.lang.Thread.run

--- 3130000 ns (0.13%), 313 samples
  [ 0] close
  [ 1] sun.nio.ch.UnixDispatcher.close0
  [ 2] sun.nio.ch.SocketDispatcher.close
  [ 3] sun.nio.ch.NioSocketImpl.lambda$closerFor$0
  [ 4] sun.nio.ch.NioSocketImpl$$Lambda.0x000000013804e7f8.run
  [ 5] jdk.internal.ref.CleanerImpl$PhantomCleanableRef.performCleanup
  [ 6] jdk.internal.ref.PhantomCleanable.clean
  [ 7] sun.nio.ch.NioSocketImpl.tryClose
  [ 8] sun.nio.ch.NioSocketImpl.close
  [ 9] java.net.Socket.close
  [10] java.net.Socket$SocketInputStream.close
  [11] java.io.FilterInputStream.close
  [12] java.io.FilterInputStream.close
  [13] robaho.net.httpserver.NoSyncBufferedInputStream.close
  [14] robaho.net.httpserver.HttpConnection.close
  [15] robaho.net.httpserver.ServerImpl.closeConnection
  [16] robaho.net.httpserver.ServerImpl$ConnectionCleanerTask.run
  [17] java.util.TimerThread.mainLoop
  [18] java.util.TimerThread.run

--- 3080000 ns (0.13%), 308 samples
  [ 0] robaho.net.httpserver.Request.consume
  [ 1] robaho.net.httpserver.Request.readLine
  [ 2] robaho.net.httpserver.Request.<init>
  [ 3] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [ 4] robaho.net.httpserver.ServerImpl$Exchange.run
  [ 5] java.util.concurrent.ThreadPoolExecutor.runWorker
  [ 6] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [ 7] java.lang.Thread.runWith
  [ 8] java.lang.Thread.run

--- 3070000 ns (0.13%), 307 samples
  [ 0] robaho.net.httpserver.Request.consume
  [ 1] robaho.net.httpserver.Request.readLine
  [ 2] robaho.net.httpserver.Request.<init>
  [ 3] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [ 4] robaho.net.httpserver.ServerImpl$Exchange.run
  [ 5] java.util.concurrent.ThreadPoolExecutor.runWorker
  [ 6] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [ 7] java.lang.Thread.runWith
  [ 8] java.lang.Thread.run

--- 3020000 ns (0.12%), 302 samples
  [ 0] sun.nio.ch.SocketDispatcher.write0
  [ 1] sun.nio.ch.SocketDispatcher.write
  [ 2] sun.nio.ch.NioSocketImpl.tryWrite
  [ 3] sun.nio.ch.NioSocketImpl.implWrite
  [ 4] sun.nio.ch.NioSocketImpl.write
  [ 5] sun.nio.ch.NioSocketImpl$2.write
  [ 6] java.net.Socket$SocketOutputStream.write
  [ 7] robaho.net.httpserver.HttpConnection$ActivityTimerOutputStream.write
  [ 8] java.io.BufferedOutputStream.flushBuffer
  [ 9] java.io.BufferedOutputStream.implFlush
  [10] java.io.BufferedOutputStream.flush
  [11] java.io.FilterOutputStream.flush
  [12] robaho.net.httpserver.FixedLengthOutputStream.close
  [13] robaho.net.httpserver.PlaceholderOutputStream.close
  [14] benchmarks.Server.lambda$createPlaintextHandler$0
  [15] benchmarks.Server$$Lambda.0x0000000138004ac0.handle
  [16] com.sun.net.httpserver.Filter$Chain.doFilter
  [17] robaho.net.httpserver.AuthFilter.doFilter
  [18] com.sun.net.httpserver.Filter$Chain.doFilter
  [19] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [20] com.sun.net.httpserver.Filter$Chain.doFilter
  [21] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [22] robaho.net.httpserver.ServerImpl$Exchange.run
  [23] java.util.concurrent.ThreadPoolExecutor.runWorker
  [24] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [25] java.lang.Thread.runWith
  [26] java.lang.Thread.run

--- 2950000 ns (0.12%), 295 samples
  [ 0] robaho.net.httpserver.ExchangeImpl.bytes
  [ 1] robaho.net.httpserver.ExchangeImpl.write
  [ 2] robaho.net.httpserver.ExchangeImpl.sendResponseHeaders
  [ 3] robaho.net.httpserver.HttpExchangeImpl.sendResponseHeaders
  [ 4] benchmarks.Server.lambda$createPlaintextHandler$0
  [ 5] benchmarks.Server$$Lambda.0x0000000138004ac0.handle
  [ 6] com.sun.net.httpserver.Filter$Chain.doFilter
  [ 7] robaho.net.httpserver.AuthFilter.doFilter
  [ 8] com.sun.net.httpserver.Filter$Chain.doFilter
  [ 9] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [10] com.sun.net.httpserver.Filter$Chain.doFilter
  [11] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [12] robaho.net.httpserver.ServerImpl$Exchange.run
  [13] java.util.concurrent.ThreadPoolExecutor.runWorker
  [14] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [15] java.lang.Thread.runWith
  [16] java.lang.Thread.run

--- 2950000 ns (0.12%), 295 samples
  [ 0] itable stub
  [ 1] java.time.format.DateTimeFormatterBuilder$CompositePrinterParser.format
  [ 2] java.time.format.DateTimeFormatter.formatTo
  [ 3] java.time.format.DateTimeFormatter.format
  [ 4] robaho.net.httpserver.ExchangeImpl.sendResponseHeaders
  [ 5] robaho.net.httpserver.HttpExchangeImpl.sendResponseHeaders
  [ 6] benchmarks.Server.lambda$createPlaintextHandler$0
  [ 7] benchmarks.Server$$Lambda.0x0000000138004ac0.handle
  [ 8] com.sun.net.httpserver.Filter$Chain.doFilter
  [ 9] robaho.net.httpserver.AuthFilter.doFilter
  [10] com.sun.net.httpserver.Filter$Chain.doFilter
  [11] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [12] com.sun.net.httpserver.Filter$Chain.doFilter
  [13] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [14] robaho.net.httpserver.ServerImpl$Exchange.run
  [15] java.util.concurrent.ThreadPoolExecutor.runWorker
  [16] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [17] java.lang.Thread.runWith
  [18] java.lang.Thread.run

--- 2740000 ns (0.11%), 274 samples
  [ 0] com.sun.net.httpserver.Headers.add
  [ 1] benchmarks.Server.lambda$createPlaintextHandler$0
  [ 2] benchmarks.Server$$Lambda.0x0000000138004ac0.handle
  [ 3] com.sun.net.httpserver.Filter$Chain.doFilter
  [ 4] robaho.net.httpserver.AuthFilter.doFilter
  [ 5] com.sun.net.httpserver.Filter$Chain.doFilter
  [ 6] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [ 7] com.sun.net.httpserver.Filter$Chain.doFilter
  [ 8] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [ 9] robaho.net.httpserver.ServerImpl$Exchange.run
  [10] java.util.concurrent.ThreadPoolExecutor.runWorker
  [11] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [12] java.lang.Thread.runWith
  [13] java.lang.Thread.run

--- 2720000 ns (0.11%), 272 samples
  [ 0] robaho.net.httpserver.Request.headers
  [ 1] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [ 2] robaho.net.httpserver.ServerImpl$Exchange.run
  [ 3] java.util.concurrent.ThreadPoolExecutor.runWorker
  [ 4] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [ 5] java.lang.Thread.runWith
  [ 6] java.lang.Thread.run

--- 2680000 ns (0.11%), 268 samples
  [ 0] sun.nio.ch.SocketDispatcher.read0
  [ 1] sun.nio.ch.SocketDispatcher.read
  [ 2] sun.nio.ch.NioSocketImpl.tryRead
  [ 3] sun.nio.ch.NioSocketImpl.implRead
  [ 4] sun.nio.ch.NioSocketImpl.read
  [ 5] sun.nio.ch.NioSocketImpl$1.read
  [ 6] java.net.Socket$SocketInputStream.read
  [ 7] java.io.FilterInputStream.read
  [ 8] robaho.net.httpserver.HttpConnection$ActivityTimerInputStream.read
  [ 9] robaho.net.httpserver.NoSyncBufferedInputStream.fill
  [10] robaho.net.httpserver.NoSyncBufferedInputStream.read
  [11] robaho.net.httpserver.Request.readLine
  [12] robaho.net.httpserver.Request.<init>
  [13] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [14] robaho.net.httpserver.ServerImpl$Exchange.run
  [15] java.util.concurrent.ThreadPoolExecutor.runWorker
  [16] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [17] java.lang.Thread.runWith
  [18] java.lang.Thread.run

--- 2520000 ns (0.10%), 252 samples
  [ 0] com.sun.net.httpserver.Headers.get
  [ 1] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [ 2] robaho.net.httpserver.ServerImpl$Exchange.run
  [ 3] java.util.concurrent.ThreadPoolExecutor.runWorker
  [ 4] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [ 5] java.lang.Thread.runWith
  [ 6] java.lang.Thread.run

--- 2370000 ns (0.10%), 237 samples
  [ 0] com.sun.net.httpserver.Headers.add
  [ 1] benchmarks.Server.lambda$createPlaintextHandler$0
  [ 2] benchmarks.Server$$Lambda.0x0000000138004ac0.handle
  [ 3] com.sun.net.httpserver.Filter$Chain.doFilter
  [ 4] robaho.net.httpserver.AuthFilter.doFilter
  [ 5] com.sun.net.httpserver.Filter$Chain.doFilter
  [ 6] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [ 7] com.sun.net.httpserver.Filter$Chain.doFilter
  [ 8] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [ 9] robaho.net.httpserver.ServerImpl$Exchange.run
  [10] java.util.concurrent.ThreadPoolExecutor.runWorker
  [11] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [12] java.lang.Thread.runWith
  [13] java.lang.Thread.run

--- 2290000 ns (0.09%), 229 samples
  [ 0] java.lang.AbstractStringBuilder.appendChars
  [ 1] java.lang.AbstractStringBuilder.append
  [ 2] java.lang.StringBuffer.append
  [ 3] robaho.net.httpserver.Request.readLine
  [ 4] robaho.net.httpserver.Request.<init>
  [ 5] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [ 6] robaho.net.httpserver.ServerImpl$Exchange.run
  [ 7] java.util.concurrent.ThreadPoolExecutor.runWorker
  [ 8] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [ 9] java.lang.Thread.runWith
  [10] java.lang.Thread.run

--- 2250000 ns (0.09%), 225 samples
  [ 0] robaho.net.httpserver.Request.headers
  [ 1] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [ 2] robaho.net.httpserver.ServerImpl$Exchange.run
  [ 3] java.util.concurrent.ThreadPoolExecutor.runWorker
  [ 4] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [ 5] java.lang.Thread.runWith
  [ 6] java.lang.Thread.run

--- 2150000 ns (0.09%), 215 samples
  [ 0] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [ 1] robaho.net.httpserver.ServerImpl$Exchange.run
  [ 2] java.util.concurrent.ThreadPoolExecutor.runWorker
  [ 3] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [ 4] java.lang.Thread.runWith
  [ 5] java.lang.Thread.run

--- 2110000 ns (0.09%), 211 samples
  [ 0] robaho.net.httpserver.Request.readLine
  [ 1] robaho.net.httpserver.Request.<init>
  [ 2] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [ 3] robaho.net.httpserver.ServerImpl$Exchange.run
  [ 4] java.util.concurrent.ThreadPoolExecutor.runWorker
  [ 5] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [ 6] java.lang.Thread.runWith
  [ 7] java.lang.Thread.run

--- 2100000 ns (0.09%), 210 samples
  [ 0] robaho.net.httpserver.ExchangeImpl.write
  [ 1] robaho.net.httpserver.ExchangeImpl.sendResponseHeaders
  [ 2] robaho.net.httpserver.HttpExchangeImpl.sendResponseHeaders
  [ 3] benchmarks.Server.lambda$createPlaintextHandler$0
  [ 4] benchmarks.Server$$Lambda.0x0000000138004ac0.handle
  [ 5] com.sun.net.httpserver.Filter$Chain.doFilter
  [ 6] robaho.net.httpserver.AuthFilter.doFilter
  [ 7] com.sun.net.httpserver.Filter$Chain.doFilter
  [ 8] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [ 9] com.sun.net.httpserver.Filter$Chain.doFilter
  [10] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [11] robaho.net.httpserver.ServerImpl$Exchange.run
  [12] java.util.concurrent.ThreadPoolExecutor.runWorker
  [13] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [14] java.lang.Thread.runWith
  [15] java.lang.Thread.run

--- 2030000 ns (0.08%), 203 samples
  [ 0] com.sun.net.httpserver.Headers.get
  [ 1] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [ 2] robaho.net.httpserver.ServerImpl$Exchange.run
  [ 3] java.util.concurrent.ThreadPoolExecutor.runWorker
  [ 4] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [ 5] java.lang.Thread.runWith
  [ 6] java.lang.Thread.run

--- 1980000 ns (0.08%), 198 samples
  [ 0] robaho.net.httpserver.ExchangeImpl.bytes
  [ 1] robaho.net.httpserver.ExchangeImpl.write
  [ 2] robaho.net.httpserver.ExchangeImpl.sendResponseHeaders
  [ 3] robaho.net.httpserver.HttpExchangeImpl.sendResponseHeaders
  [ 4] benchmarks.Server.lambda$createPlaintextHandler$0
  [ 5] benchmarks.Server$$Lambda.0x0000000138004ac0.handle
  [ 6] com.sun.net.httpserver.Filter$Chain.doFilter
  [ 7] robaho.net.httpserver.AuthFilter.doFilter
  [ 8] com.sun.net.httpserver.Filter$Chain.doFilter
  [ 9] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [10] com.sun.net.httpserver.Filter$Chain.doFilter
  [11] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [12] robaho.net.httpserver.ServerImpl$Exchange.run
  [13] java.util.concurrent.ThreadPoolExecutor.runWorker
  [14] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [15] java.lang.Thread.runWith
  [16] java.lang.Thread.run

--- 1910000 ns (0.08%), 191 samples
  [ 0] robaho.net.httpserver.Request.readLine
  [ 1] robaho.net.httpserver.Request.<init>
  [ 2] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [ 3] robaho.net.httpserver.ServerImpl$Exchange.run
  [ 4] java.util.concurrent.ThreadPoolExecutor.runWorker
  [ 5] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [ 6] java.lang.Thread.runWith
  [ 7] java.lang.Thread.run

--- 1910000 ns (0.08%), 191 samples
  [ 0] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [ 1] robaho.net.httpserver.ServerImpl$Exchange.run
  [ 2] java.util.concurrent.ThreadPoolExecutor.runWorker
  [ 3] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [ 4] java.lang.Thread.runWith
  [ 5] java.lang.Thread.run

--- 1890000 ns (0.08%), 189 samples
  [ 0] robaho.net.httpserver.NoSyncBufferedInputStream.getBufIfOpen
  [ 1] robaho.net.httpserver.NoSyncBufferedInputStream.read
  [ 2] robaho.net.httpserver.Request.readLine
  [ 3] robaho.net.httpserver.Request.<init>
  [ 4] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [ 5] robaho.net.httpserver.ServerImpl$Exchange.run
  [ 6] java.util.concurrent.ThreadPoolExecutor.runWorker
  [ 7] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [ 8] java.lang.Thread.runWith
  [ 9] java.lang.Thread.run

--- 1860000 ns (0.08%), 186 samples
  [ 0] robaho.net.httpserver.NoSyncBufferedInputStream.getBufIfOpen
  [ 1] robaho.net.httpserver.NoSyncBufferedInputStream.read
  [ 2] robaho.net.httpserver.Request.readLine
  [ 3] robaho.net.httpserver.Request.<init>
  [ 4] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [ 5] robaho.net.httpserver.ServerImpl$Exchange.run
  [ 6] java.util.concurrent.ThreadPoolExecutor.runWorker
  [ 7] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [ 8] java.lang.Thread.runWith
  [ 9] java.lang.Thread.run

--- 1850000 ns (0.08%), 185 samples
  [ 0] sun.nio.ch.NativeThread.current
  [ 1] sun.nio.ch.NioSocketImpl.beginWrite
  [ 2] sun.nio.ch.NioSocketImpl.implWrite
  [ 3] sun.nio.ch.NioSocketImpl.write
  [ 4] sun.nio.ch.NioSocketImpl$2.write
  [ 5] java.net.Socket$SocketOutputStream.write
  [ 6] robaho.net.httpserver.HttpConnection$ActivityTimerOutputStream.write
  [ 7] java.io.BufferedOutputStream.flushBuffer
  [ 8] java.io.BufferedOutputStream.implFlush
  [ 9] java.io.BufferedOutputStream.flush
  [10] java.io.FilterOutputStream.flush
  [11] robaho.net.httpserver.FixedLengthOutputStream.close
  [12] robaho.net.httpserver.PlaceholderOutputStream.close
  [13] benchmarks.Server.lambda$createPlaintextHandler$0
  [14] benchmarks.Server$$Lambda.0x0000000138004ac0.handle
  [15] com.sun.net.httpserver.Filter$Chain.doFilter
  [16] robaho.net.httpserver.AuthFilter.doFilter
  [17] com.sun.net.httpserver.Filter$Chain.doFilter
  [18] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [19] com.sun.net.httpserver.Filter$Chain.doFilter
  [20] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [21] robaho.net.httpserver.ServerImpl$Exchange.run
  [22] java.util.concurrent.ThreadPoolExecutor.runWorker
  [23] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [24] java.lang.Thread.runWith
  [25] java.lang.Thread.run

--- 1840000 ns (0.08%), 184 samples
  [ 0] com.sun.net.httpserver.Headers.put
  [ 1] [unknown_Java]

--- 1750000 ns (0.07%), 175 samples
  [ 0] sun.nio.ch.NativeThread.current
  [ 1] sun.nio.ch.NioSocketImpl.beginWrite
  [ 2] sun.nio.ch.NioSocketImpl.implWrite
  [ 3] sun.nio.ch.NioSocketImpl.write
  [ 4] sun.nio.ch.NioSocketImpl$2.write
  [ 5] java.net.Socket$SocketOutputStream.write
  [ 6] robaho.net.httpserver.HttpConnection$ActivityTimerOutputStream.write
  [ 7] java.io.BufferedOutputStream.flushBuffer
  [ 8] java.io.BufferedOutputStream.implFlush
  [ 9] java.io.BufferedOutputStream.flush
  [10] java.io.FilterOutputStream.flush
  [11] robaho.net.httpserver.FixedLengthOutputStream.close
  [12] robaho.net.httpserver.PlaceholderOutputStream.close
  [13] benchmarks.Server.lambda$createPlaintextHandler$0
  [14] benchmarks.Server$$Lambda.0x0000000138004ac0.handle
  [15] com.sun.net.httpserver.Filter$Chain.doFilter
  [16] robaho.net.httpserver.AuthFilter.doFilter
  [17] com.sun.net.httpserver.Filter$Chain.doFilter
  [18] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [19] com.sun.net.httpserver.Filter$Chain.doFilter
  [20] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [21] robaho.net.httpserver.ServerImpl$Exchange.run
  [22] java.util.concurrent.ThreadPoolExecutor.runWorker
  [23] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [24] java.lang.Thread.runWith
  [25] java.lang.Thread.run

--- 1720000 ns (0.07%), 172 samples
  [ 0] com.sun.net.httpserver.Headers.getFirst
  [ 1] [unknown_Java]

--- 1710000 ns (0.07%), 171 samples
  [ 0] java.lang.AbstractStringBuilder.appendChars
  [ 1] java.lang.AbstractStringBuilder.append
  [ 2] java.lang.StringBuffer.append
  [ 3] robaho.net.httpserver.Request.readLine
  [ 4] robaho.net.httpserver.Request.<init>
  [ 5] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [ 6] robaho.net.httpserver.ServerImpl$Exchange.run
  [ 7] java.util.concurrent.ThreadPoolExecutor.runWorker
  [ 8] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [ 9] java.lang.Thread.runWith
  [10] java.lang.Thread.run

--- 1690000 ns (0.07%), 169 samples
  [ 0] Java_sun_nio_ch_SocketDispatcher_read0
  [ 1] sun.nio.ch.SocketDispatcher.read0
  [ 2] sun.nio.ch.SocketDispatcher.read
  [ 3] sun.nio.ch.NioSocketImpl.tryRead
  [ 4] sun.nio.ch.NioSocketImpl.implRead
  [ 5] sun.nio.ch.NioSocketImpl.read
  [ 6] sun.nio.ch.NioSocketImpl$1.read
  [ 7] java.net.Socket$SocketInputStream.read
  [ 8] java.io.FilterInputStream.read
  [ 9] robaho.net.httpserver.HttpConnection$ActivityTimerInputStream.read
  [10] robaho.net.httpserver.NoSyncBufferedInputStream.fill
  [11] robaho.net.httpserver.NoSyncBufferedInputStream.read
  [12] robaho.net.httpserver.Request.readLine
  [13] robaho.net.httpserver.Request.<init>
  [14] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [15] robaho.net.httpserver.ServerImpl$Exchange.run
  [16] java.util.concurrent.ThreadPoolExecutor.runWorker
  [17] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [18] java.lang.Thread.runWith
  [19] java.lang.Thread.run

--- 1680000 ns (0.07%), 168 samples
  [ 0] sun.nio.ch.SocketDispatcher.read0
  [ 1] sun.nio.ch.SocketDispatcher.read
  [ 2] sun.nio.ch.NioSocketImpl.tryRead
  [ 3] sun.nio.ch.NioSocketImpl.implRead
  [ 4] sun.nio.ch.NioSocketImpl.read
  [ 5] sun.nio.ch.NioSocketImpl$1.read
  [ 6] java.net.Socket$SocketInputStream.read
  [ 7] java.io.FilterInputStream.read
  [ 8] robaho.net.httpserver.HttpConnection$ActivityTimerInputStream.read
  [ 9] robaho.net.httpserver.NoSyncBufferedInputStream.fill
  [10] robaho.net.httpserver.NoSyncBufferedInputStream.read
  [11] robaho.net.httpserver.Request.readLine
  [12] robaho.net.httpserver.Request.<init>
  [13] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [14] robaho.net.httpserver.ServerImpl$Exchange.run
  [15] java.util.concurrent.ThreadPoolExecutor.runWorker
  [16] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [17] java.lang.Thread.runWith
  [18] java.lang.Thread.run

--- 1670000 ns (0.07%), 167 samples
  [ 0] robaho.net.httpserver.Request.headers
  [ 1] [unknown_Java]

--- 1660000 ns (0.07%), 166 samples
  [ 0] java.time.format.DateTimeFormatterBuilder$NumberPrinterParser.format
  [ 1] java.time.format.DateTimeFormatterBuilder$CompositePrinterParser.format
  [ 2] java.time.format.DateTimeFormatter.formatTo
  [ 3] java.time.format.DateTimeFormatter.format
  [ 4] robaho.net.httpserver.ExchangeImpl.sendResponseHeaders
  [ 5] robaho.net.httpserver.HttpExchangeImpl.sendResponseHeaders
  [ 6] benchmarks.Server.lambda$createPlaintextHandler$0
  [ 7] benchmarks.Server$$Lambda.0x0000000138004ac0.handle
  [ 8] com.sun.net.httpserver.Filter$Chain.doFilter
  [ 9] robaho.net.httpserver.AuthFilter.doFilter
  [10] com.sun.net.httpserver.Filter$Chain.doFilter
  [11] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [12] com.sun.net.httpserver.Filter$Chain.doFilter
  [13] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [14] robaho.net.httpserver.ServerImpl$Exchange.run
  [15] java.util.concurrent.ThreadPoolExecutor.runWorker
  [16] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [17] java.lang.Thread.runWith
  [18] java.lang.Thread.run

--- 1640000 ns (0.07%), 164 samples
  [ 0] robaho.net.httpserver.ExchangeImpl.write
  [ 1] robaho.net.httpserver.ExchangeImpl.sendResponseHeaders
  [ 2] robaho.net.httpserver.HttpExchangeImpl.sendResponseHeaders
  [ 3] benchmarks.Server.lambda$createPlaintextHandler$0
  [ 4] benchmarks.Server$$Lambda.0x0000000138004ac0.handle
  [ 5] com.sun.net.httpserver.Filter$Chain.doFilter
  [ 6] robaho.net.httpserver.AuthFilter.doFilter
  [ 7] com.sun.net.httpserver.Filter$Chain.doFilter
  [ 8] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [ 9] com.sun.net.httpserver.Filter$Chain.doFilter
  [10] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [11] robaho.net.httpserver.ServerImpl$Exchange.run
  [12] java.util.concurrent.ThreadPoolExecutor.runWorker
  [13] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [14] java.lang.Thread.runWith
  [15] java.lang.Thread.run

--- 1640000 ns (0.07%), 164 samples
  [ 0] robaho.net.httpserver.NoSyncBufferedInputStream.getBufIfOpen
  [ 1] robaho.net.httpserver.NoSyncBufferedInputStream.read
  [ 2] robaho.net.httpserver.Request.readLine
  [ 3] robaho.net.httpserver.Request.<init>
  [ 4] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [ 5] robaho.net.httpserver.ServerImpl$Exchange.run
  [ 6] java.util.concurrent.ThreadPoolExecutor.runWorker
  [ 7] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [ 8] java.lang.Thread.runWith
  [ 9] java.lang.Thread.run

--- 1600000 ns (0.07%), 160 samples
  [ 0] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [ 1] robaho.net.httpserver.ServerImpl$Exchange.run
  [ 2] java.util.concurrent.ThreadPoolExecutor.runWorker
  [ 3] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [ 4] java.lang.Thread.runWith
  [ 5] java.lang.Thread.run

--- 1600000 ns (0.07%), 160 samples
  [ 0] Java_sun_nio_ch_SocketDispatcher_read0
  [ 1] sun.nio.ch.SocketDispatcher.read0
  [ 2] sun.nio.ch.SocketDispatcher.read
  [ 3] sun.nio.ch.NioSocketImpl.tryRead
  [ 4] sun.nio.ch.NioSocketImpl.implRead
  [ 5] sun.nio.ch.NioSocketImpl.read
  [ 6] sun.nio.ch.NioSocketImpl$1.read
  [ 7] java.net.Socket$SocketInputStream.read
  [ 8] java.io.FilterInputStream.read
  [ 9] robaho.net.httpserver.HttpConnection$ActivityTimerInputStream.read
  [10] robaho.net.httpserver.NoSyncBufferedInputStream.fill
  [11] robaho.net.httpserver.NoSyncBufferedInputStream.read
  [12] robaho.net.httpserver.Request.readLine
  [13] robaho.net.httpserver.Request.<init>
  [14] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [15] robaho.net.httpserver.ServerImpl$Exchange.run
  [16] java.util.concurrent.ThreadPoolExecutor.runWorker
  [17] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [18] java.lang.Thread.runWith
  [19] java.lang.Thread.run

--- 1600000 ns (0.07%), 160 samples
  [ 0] com.sun.net.httpserver.Headers.getFirst
  [ 1] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [ 2] robaho.net.httpserver.ServerImpl$Exchange.run
  [ 3] java.util.concurrent.ThreadPoolExecutor.runWorker
  [ 4] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [ 5] java.lang.Thread.runWith
  [ 6] java.lang.Thread.run

--- 1600000 ns (0.07%), 160 samples
  [ 0] itable stub
  [ 1] java.time.format.DateTimeFormatterBuilder$CompositePrinterParser.format
  [ 2] java.time.format.DateTimeFormatter.formatTo
  [ 3] java.time.format.DateTimeFormatter.format
  [ 4] robaho.net.httpserver.ExchangeImpl.sendResponseHeaders
  [ 5] robaho.net.httpserver.HttpExchangeImpl.sendResponseHeaders
  [ 6] benchmarks.Server.lambda$createPlaintextHandler$0
  [ 7] benchmarks.Server$$Lambda.0x0000000138004ac0.handle
  [ 8] com.sun.net.httpserver.Filter$Chain.doFilter
  [ 9] robaho.net.httpserver.AuthFilter.doFilter
  [10] com.sun.net.httpserver.Filter$Chain.doFilter
  [11] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [12] com.sun.net.httpserver.Filter$Chain.doFilter
  [13] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [14] robaho.net.httpserver.ServerImpl$Exchange.run
  [15] java.util.concurrent.ThreadPoolExecutor.runWorker
  [16] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [17] java.lang.Thread.runWith
  [18] java.lang.Thread.run

--- 1580000 ns (0.06%), 158 samples
  [ 0] java.lang.StringBuffer.<init>
  [ 1] robaho.net.httpserver.Request.readLine
  [ 2] robaho.net.httpserver.Request.<init>
  [ 3] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [ 4] robaho.net.httpserver.ServerImpl$Exchange.run
  [ 5] java.util.concurrent.ThreadPoolExecutor.runWorker
  [ 6] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [ 7] java.lang.Thread.runWith
  [ 8] java.lang.Thread.run

--- 1580000 ns (0.06%), 158 samples
  [ 0] java.lang.StringBuffer.<init>
  [ 1] robaho.net.httpserver.Request.readLine
  [ 2] robaho.net.httpserver.Request.<init>
  [ 3] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [ 4] robaho.net.httpserver.ServerImpl$Exchange.run
  [ 5] java.util.concurrent.ThreadPoolExecutor.runWorker
  [ 6] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [ 7] java.lang.Thread.runWith
  [ 8] java.lang.Thread.run

--- 1550000 ns (0.06%), 155 samples
  [ 0] java.net.URI$Parser.scan
  [ 1] java.net.URI$Parser.parseHierarchical
  [ 2] java.net.URI$Parser.parse
  [ 3] java.net.URI.<init>
  [ 4] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [ 5] robaho.net.httpserver.ServerImpl$Exchange.run
  [ 6] java.util.concurrent.ThreadPoolExecutor.runWorker
  [ 7] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [ 8] java.lang.Thread.runWith
  [ 9] java.lang.Thread.run

--- 1540000 ns (0.06%), 154 samples
  [ 0] robaho.net.httpserver.Request.headers
  [ 1] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [ 2] robaho.net.httpserver.ServerImpl$Exchange.run
  [ 3] java.util.concurrent.ThreadPoolExecutor.runWorker
  [ 4] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [ 5] java.lang.Thread.runWith
  [ 6] java.lang.Thread.run

--- 1540000 ns (0.06%), 154 samples
  [ 0] robaho.net.httpserver.ExchangeImpl.bytes
  [ 1] robaho.net.httpserver.ExchangeImpl.write
  [ 2] robaho.net.httpserver.ExchangeImpl.sendResponseHeaders
  [ 3] robaho.net.httpserver.HttpExchangeImpl.sendResponseHeaders
  [ 4] benchmarks.Server.lambda$createPlaintextHandler$0
  [ 5] benchmarks.Server$$Lambda.0x0000000138004ac0.handle
  [ 6] com.sun.net.httpserver.Filter$Chain.doFilter
  [ 7] robaho.net.httpserver.AuthFilter.doFilter
  [ 8] com.sun.net.httpserver.Filter$Chain.doFilter
  [ 9] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [10] com.sun.net.httpserver.Filter$Chain.doFilter
  [11] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [12] robaho.net.httpserver.ServerImpl$Exchange.run
  [13] java.util.concurrent.ThreadPoolExecutor.runWorker
  [14] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [15] java.lang.Thread.runWith
  [16] java.lang.Thread.run

--- 1530000 ns (0.06%), 153 samples
  [ 0] java.lang.StringBuffer.<init>
  [ 1] robaho.net.httpserver.Request.readLine
  [ 2] robaho.net.httpserver.Request.<init>
  [ 3] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [ 4] robaho.net.httpserver.ServerImpl$Exchange.run
  [ 5] java.util.concurrent.ThreadPoolExecutor.runWorker
  [ 6] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [ 7] java.lang.Thread.runWith
  [ 8] java.lang.Thread.run

--- 1530000 ns (0.06%), 153 samples
  [ 0] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [ 1] robaho.net.httpserver.ServerImpl$Exchange.run
  [ 2] java.util.concurrent.ThreadPoolExecutor.runWorker
  [ 3] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [ 4] java.lang.Thread.runWith
  [ 5] java.lang.Thread.run

--- 1520000 ns (0.06%), 152 samples
  [ 0] sun.nio.ch.SocketDispatcher.write0
  [ 1] sun.nio.ch.SocketDispatcher.write
  [ 2] sun.nio.ch.NioSocketImpl.tryWrite
  [ 3] sun.nio.ch.NioSocketImpl.implWrite
  [ 4] sun.nio.ch.NioSocketImpl.write
  [ 5] sun.nio.ch.NioSocketImpl$2.write
  [ 6] java.net.Socket$SocketOutputStream.write
  [ 7] robaho.net.httpserver.HttpConnection$ActivityTimerOutputStream.write
  [ 8] java.io.BufferedOutputStream.flushBuffer
  [ 9] java.io.BufferedOutputStream.implFlush
  [10] java.io.BufferedOutputStream.flush
  [11] java.io.FilterOutputStream.flush
  [12] robaho.net.httpserver.FixedLengthOutputStream.close
  [13] robaho.net.httpserver.PlaceholderOutputStream.close
  [14] benchmarks.Server.lambda$createPlaintextHandler$0
  [15] benchmarks.Server$$Lambda.0x0000000138004ac0.handle
  [16] com.sun.net.httpserver.Filter$Chain.doFilter
  [17] robaho.net.httpserver.AuthFilter.doFilter
  [18] com.sun.net.httpserver.Filter$Chain.doFilter
  [19] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [20] com.sun.net.httpserver.Filter$Chain.doFilter
  [21] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [22] robaho.net.httpserver.ServerImpl$Exchange.run
  [23] java.util.concurrent.ThreadPoolExecutor.runWorker
  [24] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [25] java.lang.Thread.runWith
  [26] java.lang.Thread.run

--- 1520000 ns (0.06%), 152 samples
  [ 0] sun.nio.ch.SocketDispatcher.write0
  [ 1] sun.nio.ch.SocketDispatcher.write
  [ 2] sun.nio.ch.NioSocketImpl.tryWrite
  [ 3] sun.nio.ch.NioSocketImpl.implWrite
  [ 4] sun.nio.ch.NioSocketImpl.write
  [ 5] sun.nio.ch.NioSocketImpl$2.write
  [ 6] java.net.Socket$SocketOutputStream.write
  [ 7] robaho.net.httpserver.HttpConnection$ActivityTimerOutputStream.write
  [ 8] java.io.BufferedOutputStream.flushBuffer
  [ 9] java.io.BufferedOutputStream.implFlush
  [10] java.io.BufferedOutputStream.flush
  [11] java.io.FilterOutputStream.flush
  [12] robaho.net.httpserver.FixedLengthOutputStream.close
  [13] robaho.net.httpserver.PlaceholderOutputStream.close
  [14] benchmarks.Server.lambda$createPlaintextHandler$0
  [15] benchmarks.Server$$Lambda.0x0000000138004ac0.handle
  [16] com.sun.net.httpserver.Filter$Chain.doFilter
  [17] robaho.net.httpserver.AuthFilter.doFilter
  [18] com.sun.net.httpserver.Filter$Chain.doFilter
  [19] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [20] com.sun.net.httpserver.Filter$Chain.doFilter
  [21] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [22] robaho.net.httpserver.ServerImpl$Exchange.run
  [23] java.util.concurrent.ThreadPoolExecutor.runWorker
  [24] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [25] java.lang.Thread.runWith
  [26] java.lang.Thread.run

--- 1500000 ns (0.06%), 150 samples
  [ 0] java.time.Clock.currentInstant
  [ 1] java.time.Instant.now
  [ 2] robaho.net.httpserver.ExchangeImpl.sendResponseHeaders
  [ 3] robaho.net.httpserver.HttpExchangeImpl.sendResponseHeaders
  [ 4] benchmarks.Server.lambda$createPlaintextHandler$0
  [ 5] benchmarks.Server$$Lambda.0x0000000138004ac0.handle
  [ 6] com.sun.net.httpserver.Filter$Chain.doFilter
  [ 7] robaho.net.httpserver.AuthFilter.doFilter
  [ 8] com.sun.net.httpserver.Filter$Chain.doFilter
  [ 9] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [10] com.sun.net.httpserver.Filter$Chain.doFilter
  [11] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [12] robaho.net.httpserver.ServerImpl$Exchange.run
  [13] java.util.concurrent.ThreadPoolExecutor.runWorker
  [14] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [15] java.lang.Thread.runWith
  [16] java.lang.Thread.run

--- 1460000 ns (0.06%), 146 samples
  [ 0] java.util.HashMap$HashIterator.nextNode
  [ 1] java.util.HashMap$EntryIterator.next
  [ 2] java.util.HashMap$EntryIterator.next
  [ 3] robaho.net.httpserver.ExchangeImpl.write
  [ 4] robaho.net.httpserver.ExchangeImpl.sendResponseHeaders
  [ 5] robaho.net.httpserver.HttpExchangeImpl.sendResponseHeaders
  [ 6] benchmarks.Server.lambda$createPlaintextHandler$0
  [ 7] benchmarks.Server$$Lambda.0x0000000138004ac0.handle
  [ 8] com.sun.net.httpserver.Filter$Chain.doFilter
  [ 9] robaho.net.httpserver.AuthFilter.doFilter
  [10] com.sun.net.httpserver.Filter$Chain.doFilter
  [11] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [12] com.sun.net.httpserver.Filter$Chain.doFilter
  [13] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [14] robaho.net.httpserver.ServerImpl$Exchange.run
  [15] java.util.concurrent.ThreadPoolExecutor.runWorker
  [16] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [17] java.lang.Thread.runWith
  [18] java.lang.Thread.run

--- 1440000 ns (0.06%), 144 samples
  [ 0] robaho.net.httpserver.ExchangeImpl.bytes
  [ 1] robaho.net.httpserver.ExchangeImpl.write
  [ 2] robaho.net.httpserver.ExchangeImpl.sendResponseHeaders
  [ 3] robaho.net.httpserver.HttpExchangeImpl.sendResponseHeaders
  [ 4] benchmarks.Server.lambda$createPlaintextHandler$0
  [ 5] benchmarks.Server$$Lambda.0x0000000138004ac0.handle
  [ 6] com.sun.net.httpserver.Filter$Chain.doFilter
  [ 7] robaho.net.httpserver.AuthFilter.doFilter
  [ 8] com.sun.net.httpserver.Filter$Chain.doFilter
  [ 9] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [10] com.sun.net.httpserver.Filter$Chain.doFilter
  [11] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [12] robaho.net.httpserver.ServerImpl$Exchange.run
  [13] java.util.concurrent.ThreadPoolExecutor.runWorker
  [14] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [15] java.lang.Thread.runWith
  [16] java.lang.Thread.run

--- 1440000 ns (0.06%), 144 samples
  [ 0] java.time.format.DateTimeFormatterBuilder$NumberPrinterParser.format
  [ 1] java.time.format.DateTimeFormatterBuilder$CompositePrinterParser.format
  [ 2] java.time.format.DateTimeFormatter.formatTo
  [ 3] java.time.format.DateTimeFormatter.format
  [ 4] robaho.net.httpserver.ExchangeImpl.sendResponseHeaders
  [ 5] robaho.net.httpserver.HttpExchangeImpl.sendResponseHeaders
  [ 6] benchmarks.Server.lambda$createPlaintextHandler$0
  [ 7] benchmarks.Server$$Lambda.0x0000000138004ac0.handle
  [ 8] com.sun.net.httpserver.Filter$Chain.doFilter
  [ 9] robaho.net.httpserver.AuthFilter.doFilter
  [10] com.sun.net.httpserver.Filter$Chain.doFilter
  [11] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [12] com.sun.net.httpserver.Filter$Chain.doFilter
  [13] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [14] robaho.net.httpserver.ServerImpl$Exchange.run
  [15] java.util.concurrent.ThreadPoolExecutor.runWorker
  [16] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [17] java.lang.Thread.runWith
  [18] java.lang.Thread.run

--- 1430000 ns (0.06%), 143 samples
  [ 0] sun.nio.ch.SocketDispatcher.write0
  [ 1] sun.nio.ch.SocketDispatcher.write
  [ 2] sun.nio.ch.NioSocketImpl.tryWrite
  [ 3] sun.nio.ch.NioSocketImpl.implWrite
  [ 4] sun.nio.ch.NioSocketImpl.write
  [ 5] sun.nio.ch.NioSocketImpl$2.write
  [ 6] java.net.Socket$SocketOutputStream.write
  [ 7] robaho.net.httpserver.HttpConnection$ActivityTimerOutputStream.write
  [ 8] java.io.BufferedOutputStream.flushBuffer
  [ 9] java.io.BufferedOutputStream.implFlush
  [10] java.io.BufferedOutputStream.flush
  [11] java.io.FilterOutputStream.flush
  [12] robaho.net.httpserver.FixedLengthOutputStream.close
  [13] robaho.net.httpserver.PlaceholderOutputStream.close
  [14] benchmarks.Server.lambda$createPlaintextHandler$0
  [15] benchmarks.Server$$Lambda.0x0000000138004ac0.handle
  [16] com.sun.net.httpserver.Filter$Chain.doFilter
  [17] robaho.net.httpserver.AuthFilter.doFilter
  [18] com.sun.net.httpserver.Filter$Chain.doFilter
  [19] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [20] com.sun.net.httpserver.Filter$Chain.doFilter
  [21] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [22] robaho.net.httpserver.ServerImpl$Exchange.run
  [23] java.util.concurrent.ThreadPoolExecutor.runWorker
  [24] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [25] java.lang.Thread.runWith
  [26] java.lang.Thread.run

--- 1430000 ns (0.06%), 143 samples
  [ 0] robaho.net.httpserver.NoSyncBufferedInputStream.getBufIfOpen
  [ 1] robaho.net.httpserver.NoSyncBufferedInputStream.read
  [ 2] robaho.net.httpserver.Request.readLine
  [ 3] robaho.net.httpserver.Request.<init>
  [ 4] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [ 5] robaho.net.httpserver.ServerImpl$Exchange.run
  [ 6] java.util.concurrent.ThreadPoolExecutor.runWorker
  [ 7] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [ 8] java.lang.Thread.runWith
  [ 9] java.lang.Thread.run

--- 1420000 ns (0.06%), 142 samples
  [ 0] com.sun.net.httpserver.Headers.normalize
  [ 1] com.sun.net.httpserver.Headers.containsKey
  [ 2] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [ 3] robaho.net.httpserver.ServerImpl$Exchange.run
  [ 4] java.util.concurrent.ThreadPoolExecutor.runWorker
  [ 5] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [ 6] java.lang.Thread.runWith
  [ 7] java.lang.Thread.run

--- 1420000 ns (0.06%), 142 samples
  [ 0] com.sun.net.httpserver.Headers.normalize
  [ 1] com.sun.net.httpserver.Headers.containsKey
  [ 2] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [ 3] robaho.net.httpserver.ServerImpl$Exchange.run
  [ 4] java.util.concurrent.ThreadPoolExecutor.runWorker
  [ 5] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [ 6] java.lang.Thread.runWith
  [ 7] java.lang.Thread.run

--- 1410000 ns (0.06%), 141 samples
  [ 0] accept
  [ 1] sun.nio.ch.Net.accept
  [ 2] sun.nio.ch.NioSocketImpl.accept
  [ 3] java.net.ServerSocket.implAccept
  [ 4] java.net.ServerSocket.platformImplAccept
  [ 5] java.net.ServerSocket.implAccept
  [ 6] java.net.ServerSocket.implAccept
  [ 7] java.net.ServerSocket.accept
  [ 8] robaho.net.httpserver.ServerImpl$Dispatcher.run
  [ 9] java.lang.Thread.runWith
  [10] java.lang.Thread.run

--- 1410000 ns (0.06%), 141 samples
  [ 0] java.net.URI$Parser.scan
  [ 1] java.net.URI$Parser.parseHierarchical
  [ 2] java.net.URI$Parser.parse
  [ 3] java.net.URI.<init>
  [ 4] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [ 5] robaho.net.httpserver.ServerImpl$Exchange.run
  [ 6] java.util.concurrent.ThreadPoolExecutor.runWorker
  [ 7] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [ 8] java.lang.Thread.runWith
  [ 9] java.lang.Thread.run

--- 1410000 ns (0.06%), 141 samples
  [ 0] java.util.HashMap$HashIterator.nextNode
  [ 1] java.util.HashMap$EntryIterator.next
  [ 2] java.util.HashMap$EntryIterator.next
  [ 3] robaho.net.httpserver.ExchangeImpl.write
  [ 4] robaho.net.httpserver.ExchangeImpl.sendResponseHeaders
  [ 5] robaho.net.httpserver.HttpExchangeImpl.sendResponseHeaders
  [ 6] benchmarks.Server.lambda$createPlaintextHandler$0
  [ 7] benchmarks.Server$$Lambda.0x0000000138004ac0.handle
  [ 8] com.sun.net.httpserver.Filter$Chain.doFilter
  [ 9] robaho.net.httpserver.AuthFilter.doFilter
  [10] com.sun.net.httpserver.Filter$Chain.doFilter
  [11] robaho.net.httpserver.ServerImpl$Exchange$LinkHandler.handle
  [12] com.sun.net.httpserver.Filter$Chain.doFilter
  [13] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [14] robaho.net.httpserver.ServerImpl$Exchange.run
  [15] java.util.concurrent.ThreadPoolExecutor.runWorker
  [16] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [17] java.lang.Thread.runWith
  [18] java.lang.Thread.run

--- 1400000 ns (0.06%), 140 samples
  [ 0] shutdown
  [ 1] sun.nio.ch.Net.shutdown
  [ 2] sun.nio.ch.NioSocketImpl.close
  [ 3] java.net.Socket.close
  [ 4] java.net.Socket$SocketInputStream.close
  [ 5] java.io.FilterInputStream.close
  [ 6] java.io.FilterInputStream.close
  [ 7] robaho.net.httpserver.NoSyncBufferedInputStream.close
  [ 8] robaho.net.httpserver.HttpConnection.close
  [ 9] robaho.net.httpserver.ServerImpl.closeConnection
  [10] robaho.net.httpserver.ServerImpl$ConnectionCleanerTask.run
  [11] java.util.TimerThread.mainLoop
  [12] java.util.TimerThread.run

--- 1400000 ns (0.06%), 140 samples
  [ 0] sun.nio.ch.NativeThread.current
  [ 1] sun.nio.ch.NioSocketImpl.beginRead
  [ 2] sun.nio.ch.NioSocketImpl.implRead
  [ 3] sun.nio.ch.NioSocketImpl.read
  [ 4] sun.nio.ch.NioSocketImpl$1.read
  [ 5] java.net.Socket$SocketInputStream.read
  [ 6] java.io.FilterInputStream.read
  [ 7] robaho.net.httpserver.HttpConnection$ActivityTimerInputStream.read
  [ 8] robaho.net.httpserver.NoSyncBufferedInputStream.fill
  [ 9] robaho.net.httpserver.NoSyncBufferedInputStream.read
  [10] robaho.net.httpserver.Request.readLine
  [11] robaho.net.httpserver.Request.<init>
  [12] robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
  [13] robaho.net.httpserver.ServerImpl$Exchange.run
  [14] java.util.concurrent.ThreadPoolExecutor.runWorker
  [15] java.util.concurrent.ThreadPoolExecutor$Worker.run
  [16] java.lang.Thread.runWith
  [17] java.lang.Thread.run

          ns  percent  samples  top
  ----------  -------  -------  ---
   829170000   34.10%    82917  read
   809480000   33.29%    80948  write
    55780000    2.29%     5578  sun.nio.ch.SocketDispatcher.read0
    28550000    1.17%     2855  robaho.net.httpserver.ExchangeImpl.bytes
    28170000    1.16%     2817  com.sun.net.httpserver.Headers.normalize
    25400000    1.04%     2540  robaho.net.httpserver.ServerImpl$Exchange.runPerRequest
    23850000    0.98%     2385  robaho.net.httpserver.Request.headers
    23430000    0.96%     2343  com.sun.net.httpserver.Headers.add
    21580000    0.89%     2158  robaho.net.httpserver.NoSyncBufferedInputStream.getBufIfOpen
    20310000    0.84%     2031  sun.nio.ch.SocketDispatcher.write0
    18940000    0.78%     1894  java.lang.StringBuffer.<init>
    16660000    0.69%     1666  java.util.HashMap.put
    16230000    0.67%     1623  itable stub
    16190000    0.67%     1619  sun.nio.ch.NativeThread.current
    16120000    0.66%     1612  java.util.HashMap$HashIterator.nextNode
    14820000    0.61%     1482  com.sun.net.httpserver.Headers.getFirst
    14000000    0.58%     1400  java.net.URI.<init>
    12530000    0.52%     1253  com.sun.net.httpserver.Headers.get
    12030000    0.49%     1203  java.util.HashMap.putVal
    11270000    0.46%     1127  robaho.net.httpserver.Request.consume
    10590000    0.44%     1059  com.sun.net.httpserver.Filter$Chain.doFilter
     9820000    0.40%      982  robaho.net.httpserver.Request.readLine
     9770000    0.40%      977  java.time.format.DateTimeFormatterBuilder$NumberPrinterParser.format
     9750000    0.40%      975  jbyte_disjoint_arraycopy
     9410000    0.39%      941  pthread_self
     9360000    0.38%      936  robaho.net.httpserver.ExchangeImpl.write
     9260000    0.38%      926  java.util.concurrent.ConcurrentHashMap.get
     9000000    0.37%      900  java.util.HashMap.getNode
     8570000    0.35%      857  Java_sun_nio_ch_SocketDispatcher_read0
     8420000    0.35%      842  java.lang.AbstractStringBuilder.appendChars
     8360000    0.34%      836  java.util.concurrent.locks.ReentrantLock$NonfairSync.initialTryLock
     8000000    0.33%      800  java.net.URI$Parser.scan
     7690000    0.32%      769  com.sun.net.httpserver.Headers.checkValue
     7230000    0.30%      723  java.lang.ThreadLocal$ThreadLocalMap.getEntry
     7140000    0.29%      714  java.time.Clock.currentInstant
     7080000    0.29%      708  com.sun.net.httpserver.Headers.put
     6890000    0.28%      689  robaho.net.httpserver.ExchangeImpl.sendResponseHeaders
     6810000    0.28%      681  java.util.HashMap.resize
     6660000    0.27%      666  Java_sun_nio_ch_SocketDispatcher_write0
     6230000    0.26%      623  com.sun.net.httpserver.Headers.set
     6030000    0.25%      603  java.lang.Long.getChars
     5590000    0.23%      559  java.time.ZonedDateTime.getLong
     5390000    0.22%      539  jdk.internal.misc.Unsafe.checkPrimitiveArray
     5360000    0.22%      536  robaho.net.httpserver.ContextList.findContext
     5170000    0.21%      517  jdk.internal.misc.Unsafe.checkPointer
     4840000    0.20%      484  java.time.LocalDate.ofEpochDay
     4800000    0.20%      480  java.time.format.DateTimeTextProvider.findStore
     4600000    0.19%      460  java.util.Locale.equals
     4440000    0.18%      444  jint_disjoint_arraycopy
     4400000    0.18%      440  sun.nio.ch.NioSocketImpl.write
     4270000    0.18%      427  __commpage_gettimeofday_internal
     4230000    0.17%      423  fdval
     4170000    0.17%      417  java.time.format.DateTimeFormatterBuilder$ZoneTextPrinterParser.format
     4160000    0.17%      416  java.lang.Class.getComponentType
     4080000    0.17%      408  robaho.net.httpserver.websockets.WebSocketHandler.isWebsocketRequested
     3940000    0.16%      394  robaho.net.httpserver.ExchangeImpl.<init>
     3940000    0.16%      394  java.lang.StringLatin1.toChars
     3920000    0.16%      392  mach_absolute_time
     3880000    0.16%      388  jlong_disjoint_arraycopy
     3780000    0.16%      378  java.util.HashMap$HashIterator.<init>
     3750000    0.15%      375  jdk.internal.util.ArraysSupport.mismatch
     3720000    0.15%      372  __commpage_gettimeofday
     3640000    0.15%      364  clock_gettime
     3460000    0.14%      346  java.util.Objects.checkFromIndexSize
     3460000    0.14%      346  java.lang.StringLatin1.toLowerCase
     3410000    0.14%      341  robaho.net.httpserver.NoSyncBufferedInputStream.read
     3400000    0.14%      340  semaphore_wait_trap
     3130000    0.13%      313  close
     3120000    0.13%      312  java.lang.Integer.getChars
     3020000    0.12%      302  java.lang.StringLatin1.newString
     2930000    0.12%      293  java.net.URI.decode
     2720000    0.11%      272  java.time.format.DateTimeFormatterBuilder$CompositePrinterParser.format
     2620000    0.11%      262  java.lang.Math.floorMod
     2540000    0.10%      254  sun.nio.ch.Util.isBufferTooLarge
     2390000    0.10%      239  sun.nio.ch.NativeThread.current0
     2370000    0.10%      237  JVM_GetNanoTimeAdjustment
     2260000    0.09%      226  convertReturnVal
     2260000    0.09%      226  vectorizedMismatch
     2240000    0.09%      224  jshort_disjoint_arraycopy
     2210000    0.09%      221  java.lang.AbstractStringBuilder.ensureCapacityInternal
     2210000    0.09%      221  java.time.DayOfWeek.of
     2160000    0.09%      216  sun.nio.ch.Util$BufferCache.get
     2130000    0.09%      213  java.net.URI.match
     2090000    0.09%      209  robaho.net.httpserver.AuthFilter.doFilter
     2080000    0.09%      208  java.util.Objects.equals
     2020000    0.08%      202  java.lang.AbstractStringBuilder.<init>
     2000000    0.08%      200  java.time.format.DateTimeFormatterBuilder$CharLiteralPrinterParser.format
     1910000    0.08%      191  robaho.net.httpserver.Utils.isValidName
     1840000    0.08%      184  java.time.format.DateTimeFormatterBuilder$TextPrinterParser.format
     1750000    0.07%      175  java.lang.Integer.stringSize
     1720000    0.07%      172  java.time.format.DateTimePrintContext.adjust
     1710000    0.07%      171  java.time.format.DateTimePrintContext.<init>
     1670000    0.07%      167  com.sun.net.httpserver.Headers.containsKey
     1660000    0.07%      166  jbyte_arraycopy
     1650000    0.07%      165  java.lang.StringLatin1.regionMatchesCI
     1650000    0.07%      165  gettimeofday
     1580000    0.06%      158  jdk.internal.misc.VM.getNanoTimeAdjustment
     1570000    0.06%      157  java.net.URI$Parser.parseHierarchical
     1560000    0.06%      156  java.nio.DirectByteBuffer.base
     1560000    0.06%      156  java.time.format.DateTimeTextProvider.createEntry
     1540000    0.06%      154  JNI_OnLoad
     1530000    0.06%      153  _platform_bzero$VARIANT$Haswell
     1520000    0.06%      152  jdk.internal.misc.Unsafe.checkOffset
     1520000    0.06%      152  jdk.internal.misc.CarrierThreadLocal.get
     1500000    0.06%      150  java.time.LocalDate.toEpochDay
     1480000    0.06%      148  robaho.net.httpserver.ServerImpl$Exchange.run
     1480000    0.06%      148  robaho.net.httpserver.Code.msg
     1420000    0.06%      142  java.lang.StringLatin1.indexOf
     1410000    0.06%      141  accept
     1400000    0.06%      140  shutdown
     1320000    0.05%      132  java.lang.System$2.getCarrierThreadLocal
     1250000    0.05%      125  java.time.format.DateTimeFormatterBuilder$ZoneTextPrinterParser.getDisplayName
     1220000    0.05%      122  Java_sun_nio_ch_NativeThread_current0
     1160000    0.05%      116  java.net.URI$Parser.parse
     1150000    0.05%      115  java.time.chrono.ChronoZonedDateTime.toEpochSecond
     1090000    0.04%      109  java.time.LocalDate.get0
     1060000    0.04%      106  tlv_get_addr
     1060000    0.04%      106  jdk.internal.misc.Unsafe.copyMemory
     1050000    0.04%      105  java.util.concurrent.locks.AbstractQueuedSynchronizer.signalNext
     1050000    0.04%      105  advance_directory.cold.1
     1040000    0.04%      104  __psynch_mutexwait
     1020000    0.04%      102  MemAllocator::allocate
      950000    0.04%       95  jdk.internal.util.Preconditions.checkFromIndexSize
      890000    0.04%       89  java.lang.StringBuilder.append
      880000    0.04%       88  sun.nio.ch.SocketDispatcher.read
      880000    0.04%       88  OptoRuntime::new_array_C
      860000    0.04%       86  java.nio.MappedByteBuffer.position
      840000    0.03%       84  robaho.net.httpserver.HttpExchangeImpl.sendResponseHeaders
      820000    0.03%       82  os::javaTimeMillis
      790000    0.03%       79  __psynch_cvwait
      780000    0.03%       78  HandleMark::initialize
      730000    0.03%       73  ObjArrayAllocator::initialize
      690000    0.03%       69  java.time.LocalDate.getDayOfWeek
      610000    0.03%       61  java.nio.MappedByteBuffer.limit
      590000    0.02%       59  SharedRuntime::on_slowpath_allocation_exit
      580000    0.02%       58  _platform_memset$VARIANT$Haswell
      530000    0.02%       53  java.util.concurrent.CopyOnWriteArrayList$COWIterator.next
      530000    0.02%       53  JfrObjectAllocationSample::send_event
      530000    0.02%       53  java.time.ZoneId.equals
      520000    0.02%       52  HandleMark::~HandleMark
      520000    0.02%       52  com.sun.net.httpserver.Headers.<init>
      510000    0.02%       51  unsafe_arraycopy
      500000    0.02%       50  G1Allocator::unsafe_max_tlab_alloc
      500000    0.02%       50  _platform_memmove$VARIANT$Haswell
      490000    0.02%       49  Klass::check_array_allocation_length
      470000    0.02%       47  semaphore_signal_trap
      460000    0.02%       46  java.nio.ByteBuffer.putArray
      460000    0.02%       46  OptoRuntime::new_instance_C
      460000    0.02%       46  ZThread::~ZThread
      440000    0.02%       44  java.lang.AbstractStringBuilder.newCapacity
      420000    0.02%       42  TypeArrayKlass::allocate_common
      400000    0.02%       40  CardTableBarrierSet::on_slowpath_allocation_exit
      380000    0.02%       38  G1CollectedHeap::fill_with_dummy_object
      370000    0.02%       37  os::javaTimeSystemUTC
      360000    0.01%       36  jdk.internal.misc.Unsafe.checkNativeAddress
      340000    0.01%       34  MemAllocator::Allocation::notify_allocation
      340000    0.01%       34  jdk.internal.misc.ScopedMemoryAccess.copyMemoryInternal
      330000    0.01%       33  G1NUMA::index_of_current_thread
      330000    0.01%       33  ObjectSampler::is_created
      320000    0.01%       32  getsockopt
      310000    0.01%       31  com.sun.net.httpserver.Headers$$Lambda.0x0000000138013100.accept
      310000    0.01%       31  getsockname
      290000    0.01%       29  G1CollectedHeap::attempt_allocation
      290000    0.01%       29  __psynch_mutexdrop
      280000    0.01%       28  CodeCache::find_blob
      270000    0.01%       27  AllocTracer::send_allocation_in_new_tlab
      270000    0.01%       27  JfrAllocationTracer::JfrAllocationTracer
      270000    0.01%       27  CollectedHeap::array_allocate
      260000    0.01%       26  sun.nio.ch.SocketDispatcher.write
      230000    0.01%       23  LeakProfiler::is_running
      230000    0.01%       23  frame::sender_for_compiled_frame
      220000    0.01%       22  MemAllocator::mem_allocate_inside_tlab_slow
      220000    0.01%       22  java.util.concurrent.ConcurrentHashMap.computeIfAbsent
      220000    0.01%       22  G1ParScanThreadState::do_copy_to_survivor_space
      220000    0.01%       22  java.nio.MappedByteBuffer.rewind
      210000    0.01%       21  oopFactory::new_typeArray
      190000    0.01%       19  ThreadLocalAllocBuffer::fill
      190000    0.01%       19  HeapRegion::fill_with_dummy_object
      190000    0.01%       19  __fcntl
      190000    0.01%       19  _os_semaphore_wait.cold.1
      180000    0.01%       18  G1CardTable::g1_mark_as_young
      170000    0.01%       17  jint_arraycopy
      170000    0.01%       17  ObjAllocator::initialize
      170000    0.01%       17  G1CollectedHeap::mem_allocate
      170000    0.01%       17  OptoRuntime::new_array_nozero_C
      170000    0.01%       17  G1CollectedHeap::allocate_new_tlab
      160000    0.01%       16  ThreadLocalAllocBuffer::retire_before_allocation
      150000    0.01%       15  G1ParScanThreadState::trim_queue_to_threshold
      150000    0.01%       15  robaho.net.httpserver.ServerImpl$Dispatcher.run
      150000    0.01%       15  jdk.internal.util.ArraysSupport.newLength
      140000    0.01%       14  CollectedHeap::fill_with_object
      130000    0.01%       13  CodeHeap::find_blob
      130000    0.01%       13  sun.nio.ch.Util$BufferCache.next
      120000    0.00%       12  os::javaTimeNanos
      120000    0.00%       12  G1CollectedHeap::attempt_allocation_slow
      120000    0.00%       12  void G1ScanEvacuatedObjClosure::do_oop_work<narrowOop>
      120000    0.00%       12  robaho.net.httpserver.HttpConnection.<init>
      110000    0.00%       11  ThreadLocalAllocBuffer::end_reserve
      110000    0.00%       11  AccessInternal::PostRuntimeDispatch<G1BarrierSet::AccessBarrier<598116ull, G1BarrierSet>, (AccessInternal::BarrierType)2, 598116ull>::oop_access_barrier
      110000    0.00%       11  ClassLoaderData::holder
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/loom-dev/attachments/20240624/26ea520d/attachment-0009.htm>


More information about the loom-dev mailing list