]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
bpo-36103: change default buffer size of shutil.copyfileobj() (GH-12115)
authorInada Naoki <methane@users.noreply.github.com>
Sat, 2 Mar 2019 04:31:01 +0000 (13:31 +0900)
committerGitHub <noreply@github.com>
Sat, 2 Mar 2019 04:31:01 +0000 (13:31 +0900)
commit4f1903061877776973c1bbfadd3d3f146920856e
treee9ef1a128bbee617b497bedfa52c583d36b48562
parentbcfa450f210074e16feb761ae5b3e966a2532fcf
bpo-36103: change default buffer size of shutil.copyfileobj() (GH-12115)

It is changed from 16KiB to 64KiB.  The previous default value
is used since 1990.

coreutils chose 128 KiB as minimum buffer size for block device I/O.

But shutil.copyfileobj() can be used for non block devices.
So I choose more conservative value.

As my quick benchmark, performance difference between 64KiB and
128 KiB is up to ~5%.  On the other hand, performance difference
between 32 KiB and 64 KiB can be more than 10% when file is fully
buffered.

This is why 64 KiB is rational value.
Doc/library/shutil.rst
Lib/shutil.py
Misc/NEWS.d/next/Library/2019-03-01-16-10-01.bpo-36103.n6VgXL.rst [new file with mode: 0644]