LINUX.ORG.RU

Вышел Jython 2.5.2

 , ,


0

3

После полутора лет разработки (последняя версия была выпущена 9 сентября 2009 года) вышла в свет новая версия Jython — реализации языка Python на Java. Jython является интерпретатором и компилятором (с возможностью компилировать в байткод Java).

Помимо стандартной библиотеки, программы, выполняемые в среде Jython, могут использовать любые классы Java.

Список нововведений:

  • модуль сокетов теперь поддерживает IPv6;
  • модуль сокетов также поддерживает многоязычные доменные имена (Internationalized Domain Names (RFC 3490)), поддерживаемые в Java 6;
  • повышение производительности: на тесте Richards Jython 2.5.2 работает в 3 раза быстрее, на тесте Pystone на 20% быстрее, чем версия 2.5.1;
  • модуль Posix/nt был переписан, его производительность заметно улучшилась;
  • улучшены сообщения OSError об ошибках в Windows;
  • немного уменьшено время запуска;
  • улучшен модуль эмуляции readline (требуется для поддержки IPython);
  • функции Python теперь могут быть переданы непосредственно в методы Java, которые принимают одиночный метод интерфейса (например, Callable или Runnable);
  • добавлен индексатор Google;
  • исправлены многочисленные ошибки.

>>> Подробности



Проверено: post-factum ()
Последнее исправление: post-factum (всего исправлений: 3)
Ответ на: комментарий от Quasar

>Но та же VM из Inferno много ресурсов не кушает, и при этом хорошую производительность показывает.

и многие ли её в продакшене используют?

thevery ★★★★
()

java.org.ru

anonymous
()
Ответ на: комментарий от memnek

>Вот для JVM меньше языков, чем для CLR:

Лолшто??

JVM:
Ada: JGNAT, AWK: Jawk, Cobol: Veryant isCobol, ColdFusion:Adobe ColdFusion/Railo/Open BlueDragon, Common Lisp:Armed Bear Common Lisp, /CLforJava/Jatha, Component Pascal: Gardens Point Component Pascal, Erlang: Erjang, Forth: myForth, JavaScript: Rhino, LOGO: jLogo/XLogo,
Lua: Kahlua/Luaj/Jill, Oberon-2: Canterbury Oberon-2 for JVM,
OCaml: OCaml-Java, Pascal: Canterbury Pascal for JVM, PHP:IBM WebSphere sMash PHP, Caucho Quercus, Python:Jython, Rexx:   IBM NetRexx, Ruby: JRuby, Scheme: Bigloo/Kawa/SISC/JScheme, Tcl: Jacl/JTcl
+ Clojure, Groovy, Scala

Итого 23 языка, 32 реализаций(!)

Donnie_Darko
()
Ответ на: комментарий от Donnie_Darko

> Итого 23 языка, 32 реализаций(!)

jLogo - мертв
CLforJava - мертв
Oberon-2 for JVM - мертв
Pascal for JVM - мертв
JGNAT - мертв
Jawk - мертв
Jatha - мертв

и т.д.

aho
()
Ответ на: комментарий от Donnie_Darko

> Лолшто
это говорил дотнетщик. Алсо, как под CLR, так и под JVM очень много дохлых реализаций.

memnek
() автор топика
Ответ на: комментарий от buddhist

> Jython раза в 2-4 тормознее чем CPython
дай пруф с разными бенчмарками. а то на простых арифметических операциях Jython выигрывает (на моём ноуте)

def test():
  r = 0
  rng = xrange(0, 10000)
  for i in rng:
      for j in rng:
          r = (r + (i * j) % 100) % 47
  print "Answer: ", r

if __name__ == '__main__':
    test()

теперь тестим:

memnek-laptop% time python foo_cp.py
Answer:  39
python foo_cp.py  30,65s user 0,04s system 99% cpu 30,835 total
memnek-laptop% time jython foo_cp.py
Answer:  39
jython foo_cp.py  19,91s user 0,44s system 106% cpu 19,124 total
memnek
() автор топика
Ответ на: комментарий от AVL2

>вопрос не столь прост, как кажется.

Для имбецилов да, верное утверждение. А вообще - используют как встроенный скриптовый язык.

cnupm
()
Ответ на: комментарий от tensai_cirno

> CPython тормознее PyPy раз в десять?

Ерунда. Всего раза в два (и то не на всех задачах).

tailgunner ★★★★★
()
Ответ на: комментарий от tensai_cirno

> Простите, как, если CPython тормознее PyPy раз в десять?

А если учесть, что PyPy тормознее шарпа во столько же раз, Jython не нужен.

segfault ★★★★★
()
Ответ на: комментарий от memnek

а теперь

jythonc --core --jar foo_cp.jar foo_cp.py
#тут выхлоп 
#тестим

memnek-laptop% time java -jar foo_cp.jar                
Answer:  39
java -jar foo_cp.jar  14,49s user 0,26s system 104% cpu 14,163 total

ЗЫ Jython 2.5.1. А так как обещали ещё прироста производительности, то всё будет ещё быстрее

memnek
() автор топика
Ответ на: комментарий от anonymous

и чем это хуже реализации Python на C или на самом Python

memnek
() автор топика
Ответ на: комментарий от memnek

круто! теперь можно написать, наконец, парсер lorcode на пистоне. ^_^

hizel ★★★★★
()
Ответ на: комментарий от baverman

> А jython на выходе дает тормознутое динамическое гуано.

Правильно, для JVM нужно писать на Java/Scala, а не на всяком «динамическом гуане».

kamre ★★★
()
Ответ на: комментарий от AVL2

>>мотивировка

скрептовый


рюсске?

Если цель - реализовать петон через жабу, чтобы не писать нативный >>интерпретатор там, где уже есть жабий, то такие места долго искать и >>не найти.


много мобильных устройств умеет java, но не умеет рутноп



ggrn ★★★★★
()
Ответ на: комментарий от ggrn

много мобильных устройств умеет java, но не умеет рутноп

и много мобильных устройств умеет java SE:

You need a reasonably current JVM installed on the target machine, I've used every thing from Java 1.4.2 through Java 1.6.

но не умеет запускать скрипты на python?

kamre ★★★
()

Использую CPython и вам желаю. Что касается ускорителей, реально весьма прогрессивным кажется PyPy. И с точки зрения православности он также самый-самый, поскольку это Питон, написанный на подмножестве Питона, а не Питон, написанный на Яве, которая написана на Си..

Vudod ★★★★★
()
Ответ на: комментарий от ns_ramesses

Да, у Си потенциал на порядок больше. Но оптимизация не выпрямляет рук. Т.е. если кодит быдлокодер, то на яве у него выйдет более шустрая поделка.

segfault ★★★★★
()
Ответ на: комментарий от memnek

У меня было два простых бенчмарка (изначально придуманные для Схемы) — рекурсия разной сложности и перемножение векторов (в виде списков) через map.

buddhist ★★★★★
()
Ответ на: комментарий от tensai_cirno

К сожалению, далеко не всегда и не везде. 1.3.0 вообще любил сливать. Поэтому я оцениваю их производительность как примерно равную.

buddhist ★★★★★
()

Зачем что-то программировать? Можно просто использовать конвертер программ из Windows в Linux.

anonymous
()
Ответ на: комментарий от anonymous

и зовется этот конвертер программистом. Японцы пока таких андроидов с адекватным функционалом не придумали )

pylin ★★★★★
()
Ответ на: комментарий от memnek

>дай пруф с разными бенчмарками

Тупо числодробилка:
[code=python]
def fib(n):
if n > 2:
return fib(n-1) + fib(n-2)
else:
return 1

print fib(34)
[/code]

jython-2.2.1: 9.3
jython-2.5.1-r2: 12.7
python-2.6.6-r2: 6.3


Как-то давно работу с объектами бенчил на http://balancer.ru/tech/forum/2008/08/t63003--proizvoditelnost-yazykov-obektn...

И то сказать, jython огромный прогресс сделал. 2.1(?) года три назад был что-то около 20 раз тормознее, чем Perl :)

KRoN73 ★★★★★
()
Ответ на: комментарий от anonmymous_uzer

>а кто-нибудь может объяснить, зачем ВООБЩЕ оно нужно?

скрипты для websphere AS. там есть еще jacl, но он уже давно deprecated.

ishitori
()
Ответ на: комментарий от KRoN73

хм, это ты на P4 что ли тестируешь?

localhost:tmp ildar$ time python fib.py
5702887

real   0m2.472s
user   0m2.417s
sys   0m0.017s

localhost:tmp ildar$ python --version
Python 2.6.1

thevery ★★★★
()
Ответ на: комментарий от anonymous

> Можно подумать малыш Гвидо умел писать на чистом Си, чтоб «разучиться».

А начём же написан CPython? O_o

sv75 ★★★★★
()
Ответ на: комментарий от ArtemZ

> очевидная причина существования jython'a - скорость выполнения джава байткода в jvm. jvm всегда работала гораздо быстрей питоноподелок

Это если байткод получен из статического компилируемого языка. Чудес не бывает: Jython всё еще медленее CPython.

sv75 ★★★★★
()
Ответ на: комментарий от thevery

>хм, это ты на P4 что ли тестируешь?

Да. P4-3000.

KRoN73 ★★★★★
()
Ответ на: комментарий от sv75

>Это если байткод получен из статического компилируемого языка. Чудес не бывает: Jython всё еще медленее CPython.

Jython могли бы попробовать написать как Boo :) Там и статическое связывание, и динамическое. Динамика тормозит, как обычно, статика - работает на уровне C# и сравнима с нативным кодом :) (см. ссылку на объектный Фибоначчи выше)

По-моему, из «Питонов», Boo сегодня - самый быстрый в итоге.

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

34-е фиббоначи:

memnek-laptop% time python fib.py 
5702887
python fib.py  6,31s user 0,00s system 99% cpu 6,346 total

memnek-laptop% time jython fib.py
5702887
jython fib.py  8,27s user 0,54s system 121% cpu 7,233 total

memnek-laptop% time pypy fib.py  
5702887
pypy fib.py  12,10s user 0,02s system 95% cpu 12,681 total

memnek-laptop% time python3 fib.py
5702887
python3 fib.py  4,45s user 0,00s system 97% cpu 4,578 total

memnek-laptop% time python fib_psyco.py  
5702887
python fib_psyco.py  0,20s user 0,00s system 97% cpu 0,212 total

хуже всех pypy, лучше python3, если не брать в расчёт psyco

memnek
() автор топика
Ответ на: комментарий от thevery

thevery> это вы серьёзно? как-то я не припомнимаю серьёзных программ в маркете не на java или плюсах

Потому, что кроме жабы там ни на чём писать нельзя. На крестах, кстати, тоже нельзя. Так что на чистых крестах тоже ничего серьёзного там нет, если что.

Quasar ★★★★★
()

> исправлены многочисленные ошибки.
Устрашающе. Может все-таки «многочисленные исправления ошибок»?

steinburzum
()
Ответ на: комментарий от memnek

хуже всех pypy, лучше python3, если не брать в расчёт psyco

Это сильно зависит от длины исполняемого кола. Есть 2 варианта pypy: с JIT и без него. В вашем случае программа очень короткая и потому нужен вариант без JIT. На длинных программах PyPy выигрывает колоссально:

# -*- coding: utf-8 -*-

from time import time

N = 1000000000

def Logistic(lam=1.75):
    x = 0.1
    for j in xrange(N):
        x = 1 - lam*x*x
    return x
    
def tester():
    tmp = time()
    Logistic()
    print (time() - tmp)
    
if __name__ == "__main__":
    tester()
Для третьего Питона, естественно, нужно переделать print.

Результаты тестирования на Логистическом отображении (1 млрд. итераций, процессор Intel dual core T5800):

  • Python 2.6.5 --- 219.275 сек
  • Python 3.1.2 --- 245.090 сек
  • PyPy 1.4 --- 6.548 сек
Vudod ★★★★★
()
Ответ на: комментарий от memnek

#include <stdio.h>
static unsigned int f (unsigned int n)
{
if (n > 2)
return f (n - 1) + f (n - 2);

return 1;
}

int main () {printf (" f = %u\n", f (34));}

$g++ -O3 test.cpp -o ~/tst
$time ~/tst
f = 5702887

real 0m0.080s
user 0m0.079s
sys 0m0.001s

Хотя обычно белые люди предпочитают думать головой и пишут так:
#include <stdio.h>

static unsigned int f (unsigned int n)
{
unsigned int r = 1, p = 1;

for (unsigned int i = 3;i <= n;i++)
{
unsigned int tmp = r;

r += p;
p = tmp;
}

return r;
}

int main () {printf (" f = %u\n", f (34));}
$g++ -O3 test.cpp -o ~/tst
$time ~/tst
f = 5702887

real 0m0.003s
user 0m0.001s
sys 0m0.001s

Так шта.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.