Skip to content

Buffered file io#63

Merged
mdbergmann merged 4 commits into
masterfrom
buffered-file-io
Feb 10, 2026
Merged

Buffered file io#63
mdbergmann merged 4 commits into
masterfrom
buffered-file-io

Conversation

@mdbergmann
Copy link
Copy Markdown
Owner

No description provided.

mdbergmann and others added 4 commits February 10, 2026 10:40
Replace the fgetc()-per-character loop in fgetline() with a single
AmigaDOS Read() call followed by in-memory newline scan and Seek()
to reposition. Reduces syscalls from ~80 per line to 2.

Benchmark: 9846 lines/sec for 1000-line file on emulated 68000.
Full test suite: 192/192 pass (1 pre-existing closure build failure).

Co-Authored-By: Claude Opus 4.6 <[email protected]>
…getc

Same Read+Seek pattern as fgetline (Step 1). fgets() keeps the newline,
fgetchars() is a single Read with no seek-back. Benchmark: 12190 lines/sec
(up from 9846). Full test suite: 193 pass, 0 fail.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
Tested replacing fgetseqfld()'s per-char fgetc() loop with bulk Read+Seek
(same pattern as Steps 1-2). INPUT# benchmark regressed 16% (4129 vs 4923
records/sec) because fields are short and AmigaDOS's internal 208-byte
buffer already makes fgetc() efficient for this use case. Reverted code,
kept state file documenting the finding.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
@mdbergmann mdbergmann merged commit cdd9156 into master Feb 10, 2026
@mdbergmann mdbergmann deleted the buffered-file-io branch February 19, 2026 19:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant