Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 22, 2010 05:51:54

ankh
От:
Зарегистрирован: 2010-06-22
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Быстродействие python

Искал по форуму “быстродейсвтие”, “скорость”. Ничего похожего на ответ не нашёл. Если что, извиняюсь за кросспост.

Изучать python только начал. Решил написать утилитку, парсящую текстовый файлик. Однако, прервался на парсинге опций, задавшись вопросом:

Это нормально, что код

# -*- coding: cp1251 -*-
def printCyrillic(argStr):
print unicode(argStr, 'cp1251')

from optparse import OptionParser

parser = OptionParser()
parser.add_option("-i", "--infile", dest="srcFile", default="in.txt", help="data source - FILE [%default]", metavar="FILE")
parser.add_option("-o", "--outfile", dest="dstFile", default="out.txt", help="ouput into FILE [%default]", metavar="FILE")
parser.add_option("-d", "--delimeter", dest="delim", default="|", help="string delimiter [%default]")
parser.add_option("-l", "--maxlength", type="int", dest="maxLen", default=100, help="maximum block length, chars [%default]")

(options, args) = parser.parse_args()
в частности, вывод опций
python split-by-length.py --help
выполняется порядка 13(!) секунд? Если нет, то прошу дать совет, какие настройки (или что в коде) можно исправить для увеличения скорости.

OS: Win XP SP3 Python: 2.6



Отредактировано (Июнь 22, 2010 09:40:58)

Офлайн

#2 Июнь 22, 2010 07:11:06

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Быстродействие python

Нет, это не нормально.
А другой код как работает?
При повторном вызове этого, он выполняется быстрее?
Возможно как-то затык происходит при импорте, теоретически, при некоторых условиях.
После установки Python (2.6?, винда?) какие ещё пакеты/утиль ставились?

..bw



Офлайн

#3 Июнь 22, 2010 09:39:56

ankh
От:
Зарегистрирован: 2010-06-22
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Быстродействие python

>А другой код как работает?
Дописал скриптик - работает столько же времени (но операций-то, конечно, уже больше! к тому же добавилась работа с файлами). Собственно, я так и предполагал, что время теряется на какой-то предварительной питоновской инициализации, а сам скрипт интерпретатор пробегает быстро. Только, в виду незнания платформы, не понимаю, на что именно идёт это время. Это и хочу выяснить.

>При повторном вызове этого, он выполняется быстрее?
Нет. То же самое с дописанным скриптом. Уточню временной диапазон на основе статистики: 11-13 секунд.

>После установки Python (2.6?, винда?) какие ещё пакеты/утиль ставились?
Версия питона и винды указана в стартовом посте (2.6; XP SP3)

На питон ставил Trac со всем причитающимся, модули:
* собственно, trac :-)
* genshi
* babel
* pygments
* easy_install
* mercurial
* tracAccountManager
* tracMercurial

Надеюсь, ничего не пропустил. В администрировании питона, даже на уровне установки пакетов, разбираюсь ещё хуже, чем в разработке на нём. Trac ставил “на ощупь” и по принципу “заработало - и хорошо”.



Офлайн

#4 Июнь 22, 2010 14:11:11

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Быстродействие python

Сделай так:

1. Проверь время работы полностью пустого скрипта. Или как-то так: > python -c “”.
2. С импортом, да хоть с тем же “from optparse import OptionParser”.

Подозрения у меня только easy_install вызывает. Или пакеты, если установлены в zip'ах (если установка выполняется силами easy_install, попробуй ключик -Z). С оперативкой нет проблем? Можешь проверить что винт всё это время делать?
Всё снести (проверить скорость) и поставить заново. Попробовать без easy_install (setuptools/distribute), хотя вещь очень полезная и без неё весьма сложно будет жить.

С виндой давно не работал, но насколько я знаю из-за особенностей ФС и самой ОСь (механизмы кеширования) запуск Python'а в отличии от Linux производится несколько дольше.

..bw



Офлайн

#5 Июнь 22, 2010 15:04:36

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Быстродействие python

может антивирусник или т.п. делает задержку перед запуском

Офлайн

#6 Июнь 23, 2010 04:11:32

ankh
От:
Зарегистрирован: 2010-06-22
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Быстродействие python

Хорошие новости: проблема решена. Плохие новости: точно диагностировать её не получилось.

Огромное спасибо bw и o7412369815963 за помощь! И особенно за команду ‘python -c “”’ - она стала основным инструментом тестирования. Выполнялась за те же 11-13 секунд, пока проблема была.

Ниже опишу свои действия и что происходило, вдруг кому пригодится:
* удалил setuptools, trac (были установлены виндовыми пакетами)
- результата не дало
* начал удалять TortoiseHg 1.0 - на этапе “gathering information…”. Uninstaller стал работь ооочень медленно (один сегмент прогрессБара в 5-10 секунд). При этом я заметил сетевую активность и отключил ЛАН соединение.
- во-первых, тут же удаление значительно ускорилось; и во-вторых - ‘python -c “”’ сработал за 2 неполных секунды! т.е. проблема решилась.
* (на данном этапе я решил, что затык был в TortoiseHg 1.0) включил ЛАН, установил снова TortoiseHg
- проблема не повторилась - тест по-прежнему выполнялся быстро
* (установщик TortoiseHg потребовал перезагрузку) ребут
- при загрузке винда выдала, что установлены апдейты. Как итог: TortoiseHg 1.0 вновь стоит, проблемы нет.

Так что 2 основных рабочих версии таковы:
* TortoiseHg 1.0,
* апдейт винды, который встал и неявно требовал перезагрузки.

Дело, как выяснилось, было не в питоне, а в окружении.



Офлайн

#7 Июнь 23, 2010 05:46:06

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Быстродействие python

> сработал за 2 неполных секунды! т.е. проблема решилась.

~$ time python -c “”

real 0m0.054s
user 0m0.028s
sys 0m0.017s
~$

:-) Хотя это уже особенности системы.

..bw



Офлайн

#8 Июнь 23, 2010 10:09:00

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Быстродействие python

2сек - это медленно, все равно что-то не так.

$ time python -c “”

real 0m0.015s
user 0m0.012s
sys 0m0.004s

Офлайн

#9 Июнь 24, 2010 01:38:59

ankh
От:
Зарегистрирован: 2010-06-22
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Быстродействие python

Если строго, то да - неполную секунду:

C:\docs>python_time.bat
C:\docs>echo 9:32:40,53
9:32:40,53
C:\docs>python -c ""
C:\docs>echo 9:32:41,50
9:32:41,50
М-да, помедленней, чем в Линухе *место для холивора* :-)

А в прошлый раз я “на глаз” прикинул, техника - точнее. ;-)



Офлайн

#10 Июнь 24, 2010 09:01:21

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Быстродействие python

ankh
Если строго, то да - неполную секунду:

C:\docs>python_time.bat
C:\docs>echo 9:32:40,53
9:32:40,53
C:\docs>python -c ""
C:\docs>echo 9:32:41,50
9:32:41,50
М-да, помедленней, чем в Линухе *место для холивора* :-)

А в прошлый раз я “на глаз” прикинул, техника - точнее. ;-)
никакого холивара, вот у меня на винХР под виртуалкой
C:\>echo 12:02:16,67
12:02:16,67

C:\>python -c ""

C:\>echo 12:02:16,68
12:02:16,68
затрачено 0,01 сек.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version