Summary
Running mandelbrot.awk for a longer session shows a significant performance drop toward the end of the run. Shorter runs now show strong peak performance after the typed tuple refactor and dispatch-loop extraction, but longer runs appear to degrade substantially.
Reproduction
Environment used when observed:
jawk --profile -f /mnt/c/tmp/mandelbrot.awk -v profile=1 -v nframes=400
In WSL, jawk was an alias to the standalone jar:
alias jawk='java -jar /mnt/c/Dev/jawk/target/jawk-6.4.00-SNAPSHOT-standalone.jar'
Observed behavior
With nframes=400, frame rate decreases heavily toward the end of execution, reportedly down to around 2 FPS.
Expected behavior
Performance should remain reasonably stable across long runs after JVM warmup. If there is unavoidable output or profiling overhead, it should be identified and documented.
Areas to investigate
- Allocation rate and GC pressure during long runs
- Profiling data accumulation overhead
- Output sink / terminal rendering behavior across many frames
- Runtime data structures that may grow across frames
- Any per-frame retained state in AVM/JRT
Notes
This appears separate from the typed tuple refactor performance work. The short-run nframes=100 mandelbrot benchmark is now faster than Jawk 6.3.00 after reducing executeTuples() bytecode size.
Summary
Running
mandelbrot.awkfor a longer session shows a significant performance drop toward the end of the run. Shorter runs now show strong peak performance after the typed tuple refactor and dispatch-loop extraction, but longer runs appear to degrade substantially.Reproduction
Environment used when observed:
In WSL,
jawkwas an alias to the standalone jar:Observed behavior
With
nframes=400, frame rate decreases heavily toward the end of execution, reportedly down to around 2 FPS.Expected behavior
Performance should remain reasonably stable across long runs after JVM warmup. If there is unavoidable output or profiling overhead, it should be identified and documented.
Areas to investigate
Notes
This appears separate from the typed tuple refactor performance work. The short-run
nframes=100mandelbrot benchmark is now faster than Jawk 6.3.00 after reducingexecuteTuples()bytecode size.