Ariadne Conill, twórca odtwarzacza muzycznego Audacious, inicjator rozwoju protokołu IRCv3 i lider zespołu ds. bezpieczeństwa Alpine Linux, przeprowadziła badania nad tym, jak można zoptymalizować narzędzie cat, które wypisuje jeden lub kilka plików na standardowe wyjście. Aby poprawić wydajność cat w Linuxie, zaproponowano dwie opcje optymalizacji, polegające na wykorzystaniu wywołań systemowych sendfile i splice do bezpośredniego kopiowania danych między deskryptorami plików na poziomie jądra, bez przełączania kontekstu do przestrzeni użytkownika.
Podstawowa implementacja, wykorzystująca tradycyjne wywołania read i write, prowadzące do przełączania kontekstu, przy kopiowaniu 4GB pliku z tmpfs wykazała wydajność 3.6 GB/s. Opcja oparta na sendfile pozwoliła zwiększyć wydajność do 6.4 GB/s, a opcja oparta na splice — do 11.6 GB/s, co oznacza, że była szybsza od pierwotnej wersji ponad 3 razy.
Źródło: opennet.ru
