Что такое zero-copy в Go?

Senior
313 просмотров
AFK Offer AI

Zero-copy — подход, при котором данные не копируются между буферами при передаче. В классическом случае файл читается в userspace буфер, потом копируется в socket буфер — два копирования. С zero-copy ядро передаёт данные напрямую из файлового дескриптора в сокет через sendfile/splice. В Go чистый zero-copy сложен, потому что runtime управляет памятью и GC. Но можно приблизиться: io.Copy между net.TCPConn и os.File использует splice на Linux. Ещё есть mmap через syscall. На практике это нужно только при очень высоких нагрузках на I/O.

Следующий вопрос

Что такое golden file testing?