Форум сайта python.su
6
когда вы запускаете
timeit "import re; r = re.compile(r'.*/(.+)'); r.search('/home/test/soft/print.sh').group(1)"
Офлайн
857
NataНу да, каждый раз.
он ведь каждый раз делает import re?
[guest@localhost ~]$ python3 -mtimeit "import os"
1000000 loops, best of 3: 0.889 usec per loop
[guest@localhost ~]$ python3 -mtimeit "import re"
1000000 loops, best of 3: 0.881 usec per loop
[guest@localhost ~]$
Отредактировано py.user.next (Окт. 12, 2014 00:06:01)
Офлайн
2
py.user.next
и опять победителем выходит rsplit
Офлайн
6
py.user.nextмой регекс :D
Какой из этих всех кодов отвалится?
py.user.nextвот поэтому сравнение rsplit VS basename/re.search в вашем случае необъективно
а при сравнении с .rsplit() той вообще импорт не требуется никакой.
Отредактировано Nata (Окт. 12, 2014 01:11:57)
Офлайн
857
NataТак они отдельно и стоят там, потому что у первых трёх есть импортирование. Импортирование - использование библиотеки, а вызов метода у строки - использование ядра.
вот поэтому сравнение rsplit VS basename/re.search в вашем случае необъективно
bs0dНе, ну, можно же найти, где он не подойдёт. Регулярки тут изначально, чтобы показать общий способ выделения какого-то фрагмента из строки. Изначально, если сравнивать обработку пути, то нужно сравнивать только basename() и .rsplit(), ну, может быть, ещё .partition() и .rpartition() рассмотреть. :)
и опять победителем выходит rsplit
Отредактировано py.user.next (Окт. 12, 2014 01:47:00)
Офлайн