utros
13.07.2011 14:04
Запилил говнокод http://pastebin.com/PH2sV8Zu и скормил его питону 2.6.6 и PyPy с jit'ом вчерашней сборки.
Питон отработал за 3,5 минуты, а PyPy работал пол часа и так и не закончил :(
ЧЯДНТ?!
Recommended by:
@238328
у pypy грусно с сишными модулями. Попробуй без регексп тест
спросил на #pypy. Говорят
antocuni 17:27:14
k_bx: the culprit seems to be s += ...
I think that cpython has a special case for this and optimizes it 17:27:41
k_bx 17:28:04
yeah, it's +=
antocuni 17:28:19
IIRC, pypy has code to speed up string concatenation in general, but it's disabled by default
I don't remember why 17:28:22
exarkun 17:28:54
that string optimization is so obnoxious :(
antocuni 17:28:57
arigato: do you remember why strjoin is disabled by default?
отлично, прямо как в jython. Юзаем format
а что в jython? Что за format?
там тоже конкатенация строк через операторы работает медленно и они рекомендуют юзать str.join и str.format для складывания строк
пруфов не найду
о, спасибо.
да уж. s = str.join(s, s[ri])
http://www.velocityreviews.com/forums/t3...
кто-то даже более правильную версию скрипта написал) http://codepad.org/R8arse0p
Я знаю. Там re вроде свой, не?
да, не должен быть там re через сишный модуль. Все с re в порядке вроде.
Ну это был рандомный кот, который в голову пришел со скуки. Его заоптимизировать можно очень сильно и очень легко :)
В CPython'е конкатенация тоже медленнее join для нескольких строк
учитывая то, что он не имеет смысла — да, еще как можно))
там дан годный совет — юзать StringBuffer
это ж для java, не?
http://docs.python.org/library/stringio....
Смысл был потестить работу с большими строками и, главное, регэкспами
Привет, сишарп!
будто что-то плохое
Сишарп вообще хороший, пока блевать не начинаешь с него :)
ну вот регекспы и тестируй, без += :-D
Там смысл был в тестировании на строках разной длины :)
ну можно сначала строк нагенерировать, а потом тестировать по ним, что ли
На самом деле, надо будет зопейлить хороший тест: pypy ведь нормально переваривает питоновый кот не считая черезжопного подключения сишных модулей?
иногда сегфолтится
Это не особая проблема :)
Ну мне не важно что делать, важно было понять из-за чего ТАК медленно работало
и ты понял