writev(2) は バイト列の配列を1つのシステムコールでまとめて書き込めるやつです。
NodeJS的には、ArrayBufferView (典型的にはtyped array)の配列を fs.writev()
(または fs.writevSync()
や FileHandle#writev()
)に渡せるようなインターフェイスになってます。もっとも、このwritev(2)へのインターフェイス自体は2015年にWriteStream用のprivate APIとして実装されて*1、今回はそれをfs moduleで正式に使えるようにしたってだけみたいですけどね*2。
例:
"use strict"; const fs = require("fs"); const te = new TextEncoder(); const iov = [ te.encode("Hello, "), te.encode("world!"), te.encode("\n"), ]; const result = fs.writevSync(process.stdout.fd, iov);
出力:
Hello, world!
細かなバイト列の断片を連結せずに一度のシステムコールでwriteできるので、状況によってはかなりの数のシステムコールを減らせる可能性があります。サーバーの実装ではよく使いそうですね。