On Mon, 20 Mar 2023 at 22:30, Jonathan Wakely via Libstdc++ < libstdc++@gcc.gnu.org> wrote: > On 20/03/23 22:27 +0000, Jonathan Wakely wrote: > >On 06/03/23 20:52 +0100, Jannik Glückert wrote: > >>we were previously only using sendfile for files smaller than 2GB, as > >>sendfile needs to be called repeatedly for files bigger than that. > >> > >>some quick numbers, copying a 16GB file, average of 10 repetitions: > >> old: > >> real: 13.4s > >> user: 0.14s > >> sys : 7.43s > >> new: > >> real: 8.90s > >> user: 0.00s > >> sys : 3.68s > >> > >>Additionally, this fixes > >>https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108178 > >> > >>libstdc++-v3/ChangeLog: > >> > >> * acinclude.m4 (_GLIBCXX_HAVE_LSEEK): define > >> * config.h.in: Regenerate. > >> * configure: Regenerate. > >> * src/filesystem/ops-common.h: enable sendfile for files > >> >2GB in std::filesystem::copy_file, skip zero-length files > > Also, the ChangeLog entry needs to be indented with tabs, name the > changed functions, and should be complete sentences, e.g. > > * acinclude.m4 (_GLIBCXX_HAVE_LSEEK): Define. > * config.h.in: Regenerate. > * configure: Regenerate. > * src/filesystem/ops-common.h (copy_file_sendfile): Define new > function for sendfile logic. Loop to support large files. Skip > zero-length files. > (do_copy_file): Use it. > > Here's what I plan to commit in a few weeks when GCC 14 Stage 1 opens.