![]() |
Модераторы: Poseidon |
![]() ![]() ![]() |
|
Suppir |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 20.4.2009 Репутация: нет Всего: нет |
Хочу сравнить скорость Perl, Python и Autoit в задаче поиска/замены в текстовом файле с помощью регулярных выражений.
Напишите, мне, пожалуйста, следующий элементарный код на Python: 1. Открыть файл на чтение test.txt 2. Открыть файл на запись test2.txt 3. Установить начало действия таймера 4. Читая каждую строчку из файла test.txt... а) найти текст с помощью регулярного выражения (.+?):.+ б) заменить на $1 в) записать измененную строку в test2.txt 5. Установить конец действия таймера 6. Вывести результат в секундах |
|||
|
||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: нет Всего: 70 |
Для домашних заданий, курсовых, существует "Центр Помощи".
Тема перенесена! |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 0 Всего: 33 |
легко. покажи что на остальных написал. -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
Karadul |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 378 Регистрация: 18.5.2006 Репутация: нет Всего: 1 |
Двачую, давайте код.
|
|||
|
||||
Suppir |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 20.4.2009 Репутация: нет Всего: нет |
На Perl:
use Benchmark; open(IN, "test.txt"); open(OUT, ">test2.txt"); $t0 = new Benchmark; while(<IN>){ s/(.+?):.+/$1/; print OUT } $t1 = new Benchmark; $td = timediff($t1, $t0); print "the code took:",timestr($td),"\n"; <> На Autoit: #include <Timers.au3> $IN = FileOpen("test.txt", 0) $OUT = FileOpen("test2.txt", 2) $starttime = _Timer_Init() While True $sLine = FileReadLine($IN) if @error = -1 Then ExitLoop $sLine = StringRegExpReplace($sLine, "(.+?):.+", "$1") FileWriteLine($OUT, $sLine) WEnd MsgBox(0, "", _Timer_Diff($starttime)) На Autoit(весь файл в одну переменную): $IN = FileOpen("test.txt", 0) $OUT = FileOpen("test1.txt", 2) $starttime = TimerInit() $sText = FileRead($IN) $sText = StringRegExpReplace($sText, "(.+?):.+", "$1") FileWrite($OUT, $sText) MsgBox(0, "", TimerDiff($starttime) & @CRLF) Напишите мне код на Python ![]() Добавлено @ 12:17 Результат на моем тестовом файле: Perl - 6 секунд AutoIt - 31 секунда AutoIt (весь файл в одну переменную) - 6 секунд Таким образом я обнаружил, что в AutoIt очень плохо организована работа с буфером STDIN и STDOUT. При каждом вызове функции FileWriteLine() он пишет в файл, тогда как Perl пишет "порциями" и таким образом рвет по скорости в клочья. Если в AutoIt читать файл целиком в переменную, то скорость выглядит достойно, но при этом невозможна работа со строками как с отдельными элементами (их все равно придется сплитить, а это займет много времени). Интересно узнать скорость питона. Это сообщение отредактировал(а) Suppir - 6.2.2010, 12:17 |
|||
|
||||
Karadul |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 378 Регистрация: 18.5.2006 Репутация: нет Всего: 1 |
Может, генерить строки рандомом в программе? А то может наложиться такая вещь, как кеширование файла ОС - а файл имхо должен быть не слишком маленький, чтобы что-то намерять.
|
|||
|
||||
Suppir |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 20.4.2009 Репутация: нет Всего: нет |
файл размером 23 мегабайта.
|
|||
|
||||
Suppir |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 20.4.2009 Репутация: нет Всего: нет |
Ну? 90 человек посмотрели и никто код не написал? :(
|
|||
|
||||
zim22 |
|
|||
![]() depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 16 Всего: 69 |
я не понимаю. тебе что, кто-то должен? |
|||
|
||||
Suppir |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 20.4.2009 Репутация: нет Всего: нет |
два человека сказали, что напишут. Делов-то на две минуты.
|
|||
|
||||
zim22 |
|
|||
![]() depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 16 Всего: 69 |
||||
|
||||
Suppir |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 20.4.2009 Репутация: нет Всего: нет |
Кто-нибудь владеет Python?
Напишите, пожалуйта, код из сабжа. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Центр помощи" | |
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Центр помощи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |