On 20 July 2017 at 21:43, Skip Montanaro <skip.montan...@gmail.com> wrote:

> scandir returns an iterator of DirEntry objects which contain more
> > information than the mere name.
> >
>
> As I recall, the motivation for scandir was to avoid subsequent system
> calls, so it will be slower than listdir the way you've tested it. If you
> add in the cost of fetching the other bits Terry mentioned, I suspect your
> relative timing will change.
>

In addition, listdir() returns a list of names, so building a new list from
that is fairly fast (can use a single allocation of the correct size).
scandir() returns an iterator, so building a list from that may require
multiple reallocations (depending on the number of entries in the
directory), which could skew the test results.

In neither case is building a list from the result the way you would
normally use it. A more accurate test of the way both functions would
normally be used would be to iterate over the results instead of eagerly
building a list. In this test you would also expect scandir() to use less
memory for a large directory.

Tim Delaney
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to