In an application I am developing I use splice
on Linux for socket-to-socket data transfer.
- Do other operating systems (specifically at least Windows, OS X and FreeBSD) implement
splice
or an equivalent solution? - Is it possible to imitate socket-to-socket data
splice
ing on Windows withsendfile
¹ +memmap
¹?
¹ Both exist on Windows under different names which I do not remember.
Update
You can see the performance improvements of splice
vs user space buffers on Linux.
DF
,DR
,F
,MF
,MR
are my application in its different tunneling modes,NX
is NGINX web server-p+t
uses the Linux system callsplice
+p-t
uses a portable implementation with user space buffers+p+t
uses a portable implementation with user space buffers and multiple OS threads- bars represent throughput in gigaBYTE s per second
- a single 1 gigabyte (1048576000 bytes) file was requsted 4 times by 4 concurrent clients