werehuman 16.08.2011 05:01 Psi+

Самизнаетекто соснули
"В частности, речь ведется о функциях форматирования строк. Как оказалось, разработчикам PyPy удалось увеличить производительность выполнения операций форматирования для конструкций на языке Python настолько, что удалось в два раза обогнать по скорости реализацию функции sprintf из стандартной библиотеки. При сборке с использованием GCC 4.5.2 и опции оптимизации "-O4", тестовый пример на языке Си был выполнен за 1.63 секунд (при выделении памяти не статически, а через malloc время выполнения увеличилось до 1.96 сек.) В то время как аналог на языке Python был выполнен с использованием PyPy за 0.85 сек. При запуске того же примера в CPython, на его выполнение было потрачено более 10 сек."

Recommended by: @ulidtko
1. Rayslava 16.08.2011 05:02 Office

Красиво. Питонобляди научились писать код :)

2. werehumanRayslava /1 16.08.2011 05:03 Psi+

на самом деле у pypy проблем дохера. Например, он до сих пор внезапно сегфолтится

3. Rayslavawerehuman /2 16.08.2011 05:03 Office

Мда. Зато строки быстро работают.
Кстати, надо посмотреть еще как проводился тест. Сдается мне, что где-то тут есть подвох :)

4. werehumanRayslava /3 16.08.2011 05:04 Psi+

вряд ли. Глянь в посты @mva, он напейсал sha1 на луа, который быстрее сишного. Нет тут ничего невозможного.

5. Rayslavawerehuman /4 16.08.2011 05:06 Office

Хм... Пойду, посмотрю :)
Нет, я, конечно, верю, что хороший погромист и на питоне может писать высокопроизводительные вещи, но и для сишечки своя область останется по-любому.

6. raptureRayslava /1 16.08.2011 07:01 unknown

я жопой чувствую подвох. ссылку дай.

7. Rayslavarapture /6 16.08.2011 07:01 Office

А они это так, в общих словах. Без ссылок :)
http://www.opennet.ru/opennews/art.shtml...

8. raptureRayslava /7 16.08.2011 07:11 unknown

GCC is unable to inline or unroll the sprintf call, because it sits inside of libc
Интересно VC

9. rapturerapture /8 16.08.2011 07:23 unknown

Там же в камментах по ссылке примеры кода
Results:

PyPy: real 0m13.307s
NodeJS: real 0m44.350s
C: real 0m1.812s
И объяснение мистики :)

10. Rayslavarapture /9 16.08.2011 07:24 Office

^_^

11. werehumanrapture /9 16.08.2011 07:24 Psi+

как объясняется мистика?

12. rapturewerehuman /11 16.08.2011 07:29 unknown

Как я понял, объясняется это тем, что в данном конкретном случае эти пидарасы используют if можно значение представить константой, то вычислим-ка все сразу. По этому поводу как-то была давняя шутка про то, как ебались с gcc на какой-то платформе. -O = часть значения складывается в стэк, -O2 = вместо стэка регистры, -O3 = значение тупо вычислено и в программе просто загружается в память.

13. rapturerapture /12 16.08.2011 07:37 unknown

Плюс ко всему в комментах чувак высказался, что, собственно, это не совсем динамическая оптимизация, а межможульная, потому что "gcc не может...". Если у тебя pypy есть, можно на ассемблерный код посмотреть :)

14. ulidtkoRayslava /1 16.08.2011 12:32 work

причём тут код?
питонобляди смогли в передовые технологии построения компиляторов.

15. kbwerehuman /2 16.08.2011 12:49

По идее сегфолтится только на всякой непитоновской фигне и работой с ctypes. Локализируй ошибку и расскажи на #pypy. Я вот нашел, что jinja2 вызывала то, чего не должна была (они в транке поправили тогда уже, а чуваки из pypy просто попросили релиз ускорить, что и произошло)

16. raptureulidtko /14 16.08.2011 14:39 unknown

Кстати, с clang -то не сравнивали...

Do you really want to delete ?