LINUX.ORG.RU

[#]  
Eldhenn

Re: C++, Java и Python - кто быстрее?

Опять... Казалось бы, при чём здесь Слака, тьфу, линукс?

# ()
[#]  

Re: C++, Java и Python - кто быстрее?

Не надоело?

anonymous ()
[#]  

Re: C++, Java и Python - кто быстрее?

кстати, рекомендую почитать и предыдущую статью этого автора (ссылка в начале статьи)

* ()
[#]  

Re: C++, Java и Python - кто быстрее?

> На трех страницах автор доказывает, что Java-программы - не такие
> медленные, как принято считать

Правильно - они еще медленнее

anonymous ()
[#]  
JB

Re: C++, Java и Python - кто быстрее?

лучше бы с перлом сравнивали

***** ()
[#]  

Re: C++, Java и Python - кто быстрее?

сходил - просмотрел по диагонали.
ни одной цифры не приведено - одни голые умозаключения. возможно что на словах он и докажет что ява в 10 раз быстрее С, но ни одного реального подтверждения так и не приведет.

в общем КГ/АМ

anonymous ()
[#] Ответ на: Re: C++, Java и Python - кто быстрее? от anonymous 02.06.2005 14:11:33  

Re: C++, Java и Python - кто быстрее?

>Правильно - они еще медленнее

Таже мысль:

автор доказывает, что Java-программы - не такие быстрые, как принято считать авторами Java-программ

# ()
[#]  
Zert

Re: C++, Java и Python - кто быстрее?

Дык когда это джава была медленнее чем C++? Это просто когда работаешь с ней - секунда кажется вечностью.

* ()
[#]  

Re: C++, Java и Python - кто быстрее?

> На трех страницах автор доказывает, что Java-программы - не такие медленные, как принято считать

Статья видимо расчитана на тех, у кого ни глаз, ни иных органов чувств совсем нет.

*** ()
[#]  
WFrag

Re: C++, Java и Python - кто быстрее?

Интересно, кем это принято?

**** ()
[#] Ответ на: Re: C++, Java и Python - кто быстрее? от WFrag 02.06.2005 14:35:27  

Re: C++, Java и Python - кто быстрее?

А слабо написать на C/C++ и на яве одинаковую программу, вычисляющую обратную матрицу, и скормить ей примерчик с рандомными числами размерами этак 10000x10000? И замерить время. А то что-то не убеждает меня эта велеречивость, ну никак. Если есть затруднения - могу дать код на C/C++, ваша задача - сделать аналог на яве. Кто возьмётся? :)

*** ()
[#]  
Linfan

Re: C++, Java и Python - кто быстрее?

Старые песни оглавном... Как всегда автор выдергивает отдельные фичи в JVM, которые судя по всему на асемблере писаные, и этим жутко гордится. Но как только касается дело каких-либо фич писаных на самой Java (напр. Swing) мы получаем тормоз редкосной красоты. Как по мне, это вообще глупое занятие - сравнивать языки совершенно разных концепций.

*** ()
[#]  

Re: C++, Java и Python - кто быстрее?

Какая разница кто быстрее, важно, что бы нравилось пользователю (качество, функциональность), а вы могли написать это в с приемлемыми затратами (сроки, ресурсы).

Я раньше думал, что JAVA только for server side
сейчас ситуация изменилась.

Вот несколько примеров:

IMHO лучший RSS клиент
http://www.rssowl.org/

IMHO одна из лучших IDE
www.eclipse.org

Практически все UML редакторы написаны на JAVA.

Solaris 10 интерфейс GNOME+JAVA (все очень прилично, на соседней машине стоит ;-)


PS
7 лет назад мной знакомый писатель 3d игр смеялся над теми, кто использует для рендоринга C, сейчас его даже C++ не пугает.
Посмотрим, что будет через пару лет.

(поставьте java5 (может работает и на 1.4)) кликните в ссылку откройте при помощи /usr/java/bin/javaws под ляликом, на windows все откроется само ;-)
2d игрушка на java (ala Crimson Land)
http://www.puppygames.net/downloads/alienflux.jnlp

3d игрушка на java (ala Q3 Arena)
http://home.halden.net/tombr/squareheads/squareheads.php

** ()
[#] Ответ на: Re: C++, Java и Python - кто быстрее? от yozhhh 02.06.2005 14:48:32  
WFrag

Re: C++, Java и Python - кто быстрее?

>А слабо написать на C/C++ и на яве одинаковую программу, вычисляющую обратную матрицу, и скормить ей примерчик с рандомными числами размерами этак 10000x10000? И замерить время.

Дай алгоритм, напишу. Самому лень искать/писать :)

**** ()
[#] Ответ на: Re: C++, Java и Python - кто быстрее? от yozhhh 02.06.2005 14:48:32  

Re: C++, Java и Python - кто быстрее?

Давай лучше ты напишешь на С систему управления бизнес процессами для BPEL.

Или слабо? ;-)

** ()
[#] Ответ на: Re: C++, Java и Python - кто быстрее? от Yilativs 02.06.2005 15:10:20  

Re: C++, Java и Python - кто быстрее?

> Давай лучше ты напишешь на С систему управления бизнес процессами для BPEL.

А при чём тут это? Заголовок новости вообще-то называется "C++, Java и Python - кто быстрее?". Или мои глаза меня обманывают?

*** ()
[#] Ответ на: Re: C++, Java и Python - кто быстрее? от yozhhh 02.06.2005 15:15:06  

Re: C++, Java и Python - кто быстрее?

этот заголовок на совести анонима, а заголовок статьи - "Обсуждение производительности Java"

* ()
[#] Ответ на: Re: C++, Java и Python - кто быстрее? от Yilativs 02.06.2005 14:54:02  

Re: C++, Java и Python - кто быстрее?

>кликните в ссылку откройте при помощи /usr/java/bin/javaws под ляликом, на windows все откроется само ;-)

у меня само открылось.... в дебьяне... что я не так сделал..?;)

* ()
[#]  
KRoN73

Re: C++, Java и Python - кто быстрее?

>На трех страницах автор доказывает, что Java-программы - не такие медленные, как принято считать

А в Эстонии, говорят, готовятся к проблеме 2000 :)

>А слабо написать на C/C++ и на яве одинаковую программу, вычисляющую обратную матрицу, и скормить ей примерчик с рандомными числами размерами этак 10000x10000? И замерить время. А то что-то не убеждает меня эта велеречивость, ну никак. Если есть затруднения - могу дать код на C/C++, ваша задача - сделать аналог на яве. Кто возьмётся? :)

Давай, я возьмусь. Мне это интересно :) Поскольку я нашёл один частный случай, когда одна и та же чисто вычислительная задача на Java на конкрентной машине считается быстрее, чем на Си :) - http://forums.airbase.ru/index.php?showtopic=32510

***** ()
[#] Ответ на: Re: C++, Java и Python - кто быстрее? от G_Luck 02.06.2005 15:18:31  

Re: C++, Java и Python - кто быстрее?

> меня само открылось.... в дебьяне... что я не так сделал..?;)

Походу, перестарался )))

()
[#] Ответ на: Re: C++, Java и Python - кто быстрее? от G_Luck 02.06.2005 15:18:31  

Re: C++, Java и Python - кто быстрее?

>>кликните в ссылку откройте при помощи /usr/java/bin/javaws под ляликом, >>на windows все откроется само ;-)

>у меня само открылось.... в дебьяне... что я не так сделал..?;)
Все правильно сделал ;-)
Не у всех дистров нормально jnlp обработка настоена.

PS Как впечатления? ;-)


** ()
[#] Ответ на: Re: C++, Java и Python - кто быстрее? от yozhhh 02.06.2005 15:15:06  

Re: C++, Java и Python - кто быстрее?

>> Давай лучше ты напишешь на С систему управления бизнес процессами для BPEL.

>А при чём тут это? Заголовок новости вообще-то называется "C++, Java и Python - кто быстрее?". Или мои глаза меня обманывают?

Мы посмторим чем движок быстрей процессы гоняет;-)

Чем не тривиальная задача, тем сложнее её писать на низкоуровневом языке.

Обращение матрицы будет быстрей работать на C
А ещё быстрее на асме.
Но сможет ли кто написать на асме сложную программу и не встретить пенсию? ;-)

** ()
[#] Ответ на: Re: C++, Java и Python - кто быстрее? от yozhhh 02.06.2005 14:48:32  
vada

Re: C++, Java и Python - кто быстрее?

>А слабо написать на C/C++ и на яве одинаковую программу

В рамках этого форума уже проводилась писямерка между С и JAVA.

Задача была написать программу генерирующую массив из мульена целых чисел. Потом его отсортировать. Потом произвольную выборку поделать.

Первый вариант обеих программ показал, что JAVA быстрее сишной реализации. После чего, автор сишной программы переписал метод сортировки и, таки, обогнал JAVA. Разница была просто смешной.

ЗЫ. На java я писал.

**** ()
[#] Ответ на: Re: C++, Java и Python - кто быстрее? от Yilativs 02.06.2005 15:37:10  

Re: C++, Java и Python - кто быстрее?

вот сейчас тряхнул стариной, вытащил прогу на С - вычисление определителя методом LU разложения, матрица 1000x1000

переписал почти зеркально на Java

резельтат

[dea@filer ch2]$ ./task2
determinant II = 1.45102 time 13980 msec
[dea@filer ch2]$ java LUdet
determinant II = 1.45102 time 8.16700 sec

кому надо - вышлю исходники на мыло

* ()
[#] Ответ на: Re: C++, Java и Python - кто быстрее? от iogan18tm 02.06.2005 15:03:02  

Re: C++, Java и Python - кто быстрее?

> А давай. Интересно будет посмотреть.

Зачем далеко ходить, зачем какие-то обратные матрицы? Ты перемножение двух матриц проверь сначала :)

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(int argc, char* argv[])
{
  double *A=NULL;
  double *B=NULL;
  double *C=NULL;
  int i,j,k,n,m,p;
  time_t t0,t1;

  n=1000;
  m=1000;
	p=1000;
  t0=time(NULL);
  A=(double *)malloc(n*m*sizeof(double));
  B=(double *)malloc(m*p*sizeof(double));
  C=(double *)malloc(n*p*sizeof(double));
  for (i=0;i<n;i++)
    for (j=0;j<m;j++)
		  A[i*m+j]=rand();
  for (i=0;i<m;i++)
    for (j=0;j<p;j++)
		  B[i*p+j]=rand();
  for (i=0;i<n;i++)
    for (j=0;j<p;j++) {
		  C[i*p+j]=0;
		  for (k=0;k<m;k++)
		  C[i*p+j]+=A[i*n+m]*B[m*p+j];
			}

  t1=time(NULL);
  printf("Calculation time: %f\n",difftime(t1,t0));                               
  free(C);
  free(B);
  free(A);
  return 0;
}

Это на C. Попробуй переделать в C++ и Java :)

*** ()
[#] Ответ на: Re: C++, Java и Python - кто быстрее? от yozhhh 02.06.2005 16:03:18  

Re: C++, Java и Python - кто быстрее?

Блин, намешал пробелов с табуляциями :(( Ладно, кому надо - поймёт, что в чём :)

*** ()
[#] Ответ на: Re: C++, Java и Python - кто быстрее? от yozhhh 02.06.2005 16:10:55  

Re: C++, Java и Python - кто быстрее?

Shit. Ещё и в формуле напортачил. В общем, C[i*p+j]+=A[i*m+k]*B[k*p+j]; :)

*** ()
[#] Ответ на: Re: C++, Java и Python - кто быстрее? от yozhhh 02.06.2005 16:03:18  

Re: C++, Java и Python - кто быстрее?

Кстати, у меня на этой программе использование -O2 даёт сокращение времени расчёта РОВНО В 2 РАЗА с сравнении с просто gcc -o mmult mmult.c

*** ()
[#] Ответ на: Re: C++, Java и Python - кто быстрее? от vada 02.06.2005 15:50:18  
vada

Re: C++, Java и Python - кто быстрее?

>ЗЫ. На java я писал.

А Саныч пиво зажал!

2Саныч. Пиво гони!!!!!!

ЗЫ. Все эти пузомерки есть херня. Язык программирования выбирают под задачу. На жабе числодробилки ни кто писать не будет, т.к. кроме скорости счета, еще есть и скушанные ресурсы (память). А тут у жабы увы...

**** ()
[#] Ответ на: Re: C++, Java и Python - кто быстрее? от yozhhh 02.06.2005 16:21:35  

Re: C++, Java и Python - кто быстрее?

[dea@filer m]$ gcc -O2 m.c
[dea@filer m]$ ./a.out
Calculation time: 58.000000

[dea@filer m]$ java Mul
Calculation time: 58992 millis



текст:

import java.util.Calendar;

public class Mul {

	public static void main(String[] args)
	{
	  int i,j,k,n,m,p;
	  long t0,t1;

	  n=1000;
	  m=1000;
	  p=1000;
	  t0=Calendar.getInstance().getTimeInMillis();
	  double A[] = new double[n*m];
	  double B[] = new double[m*p];
	  double C[] = new double[n*p];
	  for (i=0;i<n;i++)
	    for (j=0;j<m;j++)
			  A[i*m+j]=Math.random();
	  for (i=0;i<m;i++)
	    for (j=0;j<p;j++)
			  B[i*p+j]=Math.random();
	  for (i=0;i<n;i++) {
	    for (j=0;j<p;j++) {
			  C[i*p+j]=0;
			  for (k=0;k<m;k++) {
				  C[i*p+j]+=A[i*m+k]*B[k*p+j]; 
			  }
	    }
	  }

	  t1=Calendar.getInstance().getTimeInMillis();
	  System.out.printf("Calculation time: %d millis %n",t1 - t0);                               
	}

}

* ()
[#] Ответ на: Re: C++, Java и Python - кто быстрее? от vada 02.06.2005 16:26:15  

Re: C++, Java и Python - кто быстрее?

это ты прав:
кроме скорости счета, еще есть и скушанные ресурсы.

А ресурсы это проектирование, разработка, кодирование, тестирование, сопровождение

А тут у плюсов (о сях молчу...) увы...

* ()
[#] Ответ на: Re: C++, Java и Python - кто быстрее? от yozhhh 02.06.2005 16:33:55  

Re: C++, Java и Python - кто быстрее?

да уж, тормоза у жабы - только свист стоит ;-)))

кстати - секунду вполне мог календарь сожрать. Да и раз от раза колебания в пределах 200 миллисекунд

* ()
[#] Ответ на: Re: C++, Java и Python - кто быстрее? от yozhhh 02.06.2005 16:33:55  

Re: C++, Java и Python - кто быстрее?

А! понял где ты меня надул, у Жабы Math.random() гораздо круче сишного rand()

надо drand48 использовать:

[dea@filer m]$ gcc -O2 m.c
[dea@filer m]$ ./a.out
Calculation time: 60.000000

* ()
[#] Ответ на: Re: C++, Java и Python - кто быстрее? от dea 02.06.2005 16:33:19  
vada

Re: C++, Java и Python - кто быстрее?

>А тут у плюсов (о сях молчу...) увы...

Семблер, не кночи вспомнить, ваще беда....

Кстати, календарь прихавывает будь здоров...

**** ()
[#] Ответ на: Re: C++, Java и Python - кто быстрее? от dea 02.06.2005 16:42:16  

Re: C++, Java и Python - кто быстрее?

> кстати - секунду вполне мог календарь сожрать. Да и раз от раза колебания в пределах 200 миллисекунд

Не уверен. Просто difftime у меня всегда выдаёт целое число секунд. Так что реально там могла быть и больше, чем ровно 58. Надо попробовать что-нибудь другое.

*** ()
[#] Ответ на: Re: C++, Java и Python - кто быстрее? от yozhhh 02.06.2005 16:51:47  

Re: C++, Java и Python - кто быстрее?

надо юзать clock(), в этом случае показывается: 57.710

так что - в пределах погрешности

* ()
[#] Ответ на: Re: C++, Java и Python - кто быстрее? от yozhhh 02.06.2005 16:51:47  
vada

Re: C++, Java и Python - кто быстрее?

> Надо попробовать что-нибудь другое.

Date t0 = new Date();
..............
Date t1 = new Date();

System.out.println(" Time="+String.valueOf(t1.getTime-t0.getTime())+" ms")

А так?

**** ()
[#]  
jackill

Re: C++, Java и Python - кто быстрее?

Я так думаю, что если бы они были нормальные по скорости, не пришлось бы ничего доказывать.

Ну не уровня C программы на java и делалась последняя не для этого, но народ упорно год за годом пытается доказать, что java быстрее всех быстрых, что даже дум можно первый спортировать и на четвертом пне он даже пойдет как и на четверке...

Как только не устают фигней страдать?

***** ()
[#] Ответ на: Re: C++, Java и Python - кто быстрее? от dea 02.06.2005 16:57:01  

Re: C++, Java и Python - кто быстрее?

как видишь, колебания чуть ли не 2 секунды, и скорее всего это просто расходы на подсистему памяти.

думаю, мой тест на LU разложение более показателен.

* ()
[#] Ответ на: Re: C++, Java и Python - кто быстрее? от vada 02.06.2005 16:57:07  

Re: C++, Java и Python - кто быстрее?

неохота, все равно придут jackill'ы и все опошлят

* ()
[#] Ответ на: Re: C++, Java и Python - кто быстрее? от yozhhh 02.06.2005 14:48:32  

Re: C++, Java и Python - кто быстрее?

> А слабо написать на C/C++ и на яве одинаковую программу, вычисляющую обратную матрицу, и скормить ей примерчик с рандомными числами размерами этак 10000x10000? И замерить время. А то что-то не убеждает меня эта велеречивость, ну никак. Если есть затруднения - могу дать код на C/C++, ваша задача - сделать аналог на яве. Кто возьмётся? :)

я возьмусь. Давай код на sl@whiteants.net

* ()
[#] Ответ на: Re: C++, Java и Python - кто быстрее? от Yilativs 02.06.2005 14:54:02  
vada

Re: C++, Java и Python - кто быстрее?

>3d игрушка на java (ala Q3 Arena)
>http://home.halden.net/tombr/squareheads/squareheads.php

Упс :(((

java.lang.IllegalStateException: Mouse must be created before creating cursor objects
	at org.lwjgl.input.Cursor.<init>(Cursor.java:90)
	at trb.gui.MouseCursor.createCursor(MouseCursor.java:142)
	at trb.gui.MouseCursor.enableNativeCursor(MouseCursor.java:92)
	at sh.SquareHeads.enableCursor(SquareHeads.java:395)
	at sh.SquareHeads.initLwjgl(SquareHeads.java:160)
	at sh.SquareHeads.main(SquareHeads.java:1461)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.jav
a:25)
	at java.lang.reflect.Method.invoke(Method.java:324)
	at com.sun.javaws.Launcher.executeApplication(Launcher.java:837)
	at com.sun.javaws.Launcher.executeMainClass(Launcher.java:797)
	at com.sun.javaws.Launcher.continueLaunch(Launcher.java:675)
	at com.sun.javaws.Launcher.handleApplicationDesc(Launcher.java:390)
	at com.sun.javaws.Launcher.handleLaunchFile(Launcher.java:199)
	at com.sun.javaws.Launcher.run(Launcher.java:167)
	at java.lang.Thread.run(Thread.java:534)

**** ()
[#] Ответ на: Re: C++, Java и Python - кто быстрее? от yozhhh 02.06.2005 16:21:35  

Re: Re: C++, Java и Python - кто быстрее?

на С vitus@[]:~/tmp> gcc -O0 1.c && ./a.out Calculation time: 71.000000 vitus@[]:~/tmp> gcc -O2 1.c && ./a.out Calculation time: 22.000000 vitus@[]:~/tmp> gcc -O3 1.c && ./a.out Calculation time: 22.000000 на Java (один в один из С) Calculation time: 57654 (т.е. 57.5 секунды). т.е. хуже 2.5 раза чем оптимизированный C, но на 20% быстрее чем не опр. С. Не так уж и плохо. =) машинка p3 933МГЦ. Памяти хватало =).

**** ()
[#] Ответ на: Re: Re: C++, Java и Python - кто быстрее? от vtVitus 02.06.2005 17:27:44  

Re: Re: C++, Java и Python - кто быстрее?

на С vitus@[]:~/tmp> gcc -O0 1.c && ./a.out

Calculation time: 71.000000

vitus@[]:~/tmp> gcc -O2 1.c && ./a.out

Calculation time: 22.000000

vitus@[]:~/tmp> gcc -O3 1.c && ./a.out

Calculation time: 22.000000

на Java (один в один из С)

Calculation time: 57654 (т.е. 57.5 секунды).

т.е. хуже 2.5 раза чем оптимизированный C, но на 20% быстрее чем не опр. С. Не так уж и плохо. =) машинка p3 933МГЦ. Памяти хватало =).

**** ()