Tech Tip #22: Buffer your reads and writes

Writing one line at a time means one system call per line.

Video created by explainapaper.com

The problem

Unbuffered I/O turns every small read or write into its own trip to the operating system and the disk. Log files, CSV exports and socket writes are the usual culprits.

The fix you can use today

  • Wrap streams in a buffered reader or writer (BufferedWriter, io.BufferedWriter, bufio).
  • Write in chunks, and stream large files instead of loading them whole.
  • Flush when you need durability, not after every line.

GreenCode researchers list unbuffered reads and writes among the worst energy wasters in code.

Tools that help

  • GreenCode Constitution skill (GreenCode researchers): open-source energy principles and a catalogue of 37 energy anti-patterns that an AI coding agent can follow to find and fix waste like this
  • green-languages (GreenCode researchers): a command-line tool that measures the energy of whole programs or marked sections of code, across languages

How GreenCode helps

GreenCode helps tackle this by rewriting flagged code one piece at a time. It writes any missing tests first, and returns every change for a person to approve. More on this.

Tags

#performance#java#python

Sources

Transcript

Writing one line at a time means one system call per line. Each call is a separate trip to the operating system, and often the disk. Log files, spreadsheet exports and network writes are the usual culprits. A million lines can mean a million trips. Every trip costs processor time, and that means electricity. Here is the fix you can use today. Wrap your streams in a buffered reader or writer. Then thousands of small calls become a handful of big ones. Write in chunks, and stream large files instead of loading them whole. Flush when you need the data to be safe, not after every line. GreenCode's Constitution skill can help an AI coding agent find and fix this. Then check the saving, using tools like green-languages to measure before and after. GreenCode researchers list unbuffered reads and writes among the worst energy wasters in code. GreenCode helps tackle this by rewriting flagged code one piece at a time. It writes missing tests first, and a person approves every change. That was GreenCode Tech Tip number twenty-two. Follow for the next tip, and find more on greencode.ai/tech-tips.

All GreenCode Tech Tips · All GreenCode videos

  • Tip #22
  • For Developers
  • Length 1:12
  • Category Code efficiency
GreenCode

Want this checked on your own system? Talk to the GreenCode team.

Get in touch