LINUX.ORG.RU

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

Eldhenn
()

Не надоело?

anonymous
()

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

dea
()

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

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

anonymous
()

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

JB ★★★★★
()

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

в общем КГ/АМ

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

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

Таже мысль:

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

zZzZ
()

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

Zert
()

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

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

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

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

yozhhh ★★★
()

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

Linfan ★★★★★
()

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

Я раньше думал, что 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

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

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

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

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

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

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

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

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

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

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

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

G_Luck
()

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

вот сейчас тряхнул стариной, вытащил прогу на С - вычисление определителя методом 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

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

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

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

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

#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 :)

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

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

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

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

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

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

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

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

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

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

[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);                               
	}

}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

А так?

vada ★★★★★
()

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

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

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

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

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

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

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

И то верно. Мы же знаем, где истина.

:))))

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

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

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

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

>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)

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

на С 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МГЦ. Памяти хватало =).

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

на С 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МГЦ. Памяти хватало =).

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