Skip to content

Conversation

@nineteendo
Copy link
Contributor

@nineteendo nineteendo commented Apr 8, 2024

Benchmark

ntpath.py

::test.bat
@echo off
echo split() && python -m timeit -s "import before.ntpath" "before.ntpath.split('foo')" && python -m timeit -s "import after.ntpath" "after.ntpath.split('foo')"
echo ismount() && python -m timeit -s "import before.ntpath" "before.ntpath.ismount('//')" && python -m timeit -s "import after.ntpath" "after.ntpath.ismount('//')"
echo expanduser() && python -m timeit -s "import before.ntpath" "before.ntpath.expanduser('~')" && python -m timeit -s "import after.ntpath" "after.ntpath.expanduser('~')"
echo expanduser('~' + 'a' * 100) && python -m timeit -s "import before.ntpath" "before.ntpath.expanduser('~' + 'a' * 100)" && python -m timeit -s "import after.ntpath" "after.ntpath.expanduser('~' + 'a' * 100)"
split()
500000 loops, best of 5: 867 nsec per loop # before
500000 loops, best of 5: 801 nsec per loop # after
# -> 1.08x faster
ismount()
200000 loops, best of 5: 1.21 usec per loop # before
200000 loops, best of 5: 1.16 usec per loop # after
# -> 1.04x faster
expanduser()
500000 loops, best of 5: 977 nsec per loop # before
500000 loops, best of 5: 965 nsec per loop # after
# -> no difference
expanduser('~' + 'a' * 100)
20000 loops, best of 5: 18 usec per loop # before
20000 loops, best of 5: 11.3 usec per loop # after
# -> 1.59x faster (for long usernames)

posixpath.py

# test.sh
echo "isabs()" && python -m timeit -s "import before.posixpath" "before.posixpath.isabs('/')" && python -m timeit -s "import after.posixpath" "after.posixpath.isabs('/')"
echo "join()" && python -m timeit -s "import before.posixpath" "before.posixpath.join('foo')" && python -m timeit -s "import after.posixpath" "after.posixpath.join('foo')"
echo "split()" && python -m timeit -s "import before.posixpath" "before.posixpath.split('foo')" && python -m timeit -s "import after.posixpath" "after.posixpath.split('foo')"
echo "basename()" && python -m timeit -s "import before.posixpath" "before.posixpath.basename('foo')" && python -m timeit -s "import after.posixpath" "after.posixpath.basename('foo')"
echo "dirname()" && python -m timeit -s "import before.posixpath" "before.posixpath.dirname('foo')" && python -m timeit -s "import after.posixpath" "after.posixpath.dirname('foo')"
echo "expanduser()" && python -m timeit -s "import before.posixpath" "before.posixpath.expanduser('~')" && python -m timeit -s "import after.posixpath" "after.posixpath.expanduser('~')"
isabs()
1000000 loops, best of 5: 235 nsec per loop # before
1000000 loops, best of 5: 204 nsec per loop # after
# -> 1.15x faster
join()
1000000 loops, best of 5: 322 nsec per loop # before
1000000 loops, best of 5: 303 nsec per loop # after
# -> 1.06x faster
split()
1000000 loops, best of 5: 351 nsec per loop # before
1000000 loops, best of 5: 339 nsec per loop # after
# -> 1.04x faster
basename()
1000000 loops, best of 5: 284 nsec per loop # before
1000000 loops, best of 5: 257 nsec per loop # after
# -> 1.11x faster
dirname()
1000000 loops, best of 5: 286 nsec per loop # before
1000000 loops, best of 5: 262 nsec per loop # after
# -> 1.09x faster
expanduser()
200000 loops, best of 5: 1.38 usec per loop # before
200000 loops, best of 5: 1.26 usec per loop # after
# -> 1.10 faster

@nineteendo nineteendo marked this pull request as ready for review April 8, 2024 13:27
@nineteendo nineteendo deleted the remove-get_bothseps branch April 9, 2024 20:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants