JRuby File IO Using MMAP
summary
Title matches content: JRuby plus Java NIO, memory mapping and JNI-style JRuby extensions, with microbenchmarks and a persistent queue prototype. Claims and results are concrete: standard file I/O hits 680–900 MB/s, naive mmap via Java strings is slower, avoiding implicit conversions with explicit unsafe byte access raises throughput to 5–7 GB/s, and the mmap-backed persistent queue prototype achieves about 100 MB/s (peaks ~500 MB/s for pure writes). Code uses JRuby String getByteList, Java ByteBuffer mmap, a page cache and a dual in‑memory/persistent queue.
AI-written summary · about
chapters (22)
- 0:00Start
- 1:50Data in Ruby
- 2:53Ruby String Encoding
- 4:28Java String Encoding
- 5:53Object Persistence
- 7:44Strings Persistence
- 8:34Motivation.logstash pipeline
- 10:27Raw IO Performance
- 10:55Strategies
- 12:53Standard Ruby File IO
- 14:51mmap IO advantages
- 18:29mmap - Java class, implicit casting, default charsets
- 20:26mmap - Java class, implicit casting, ISO 8859-1 charset
- 21:11mmap - Java class, explicit Ruby-side casting
- 22:13mmap - Java class, explicit Java-side casting
- 24:36mmap - Java JRuby extension, unsafe bytes
- 29:48Persistent Queues Benchmarks
- 30:53Persistent SizedQueue /PageCache
- 31:29Persistent SizedQueue / SinglePage
- 32:09Persistent Queue Read/Write
- 32:25Persistent Queue Write then Read
- 33:20Elephant in the Room








