Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Java медленнее C в 25 раз!!!  (Прочитано 24822 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн s.r

  • Автор темы
  • Участник
  • *
  • Сообщений: 162
  • Во какой!!!!
    • Просмотр профиля
Java медленнее C в 25 раз!!!
« : 14 Июль 2006, 15:11:20 »
Скомпилил программу на Java и на С. Нлгоритм полностью один и тот же (за исключением тонкостей языка). На Java задача выполнслась 1 минута 40 секунд, а на С 4 секунды. Вывод, Java медленнее С в 25 раз?
Я конечно понимаю, что Java -- интерпретируемый язык, но...и Не стоит таких жертв их мультиплатформенность.

Действительно ли это так?


Оффлайн s.r

  • Автор темы
  • Участник
  • *
  • Сообщений: 162
  • Во какой!!!!
    • Просмотр профиля
Re: Java медленнее C в 25 раз!!!
« Ответ #1 : 14 Июль 2006, 15:22:17 »
Вот решил приаттачить файлы, которые с компилил. Я их чуть-чуть изменил (чтобы уж совсем походили), так что возможно они не будут работать, но если и вправить что-нибудь нужно то не сильно.

z3c.txt -- программа на С
z3j.txt -- программа на Java


[вложение удалено Администратором]

Оффлайн Kwah

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 1442
  • Ubuntu 17.10
    • Просмотр профиля
Re: Java медленнее C в 25 раз!!!
« Ответ #2 : 14 Июль 2006, 15:25:57 »
СВ в чистом виде.

У любого языка/платформы - свос ниша, есть сильные и слабые стороны. Любой крупный проект использует набор технологий, адекватных решаемым задачам. Как пример: писать на Ява нечто сугубо вычислительное - маразм, тут по прежнему рулст языки типа фортрана/си.

bobrik

  • Гость
Re: Java медленнее C в 25 раз!!!
« Ответ #3 : 14 Июль 2006, 15:38:39 »
Си тож кроссплатформенный

Оффлайн afon

  • Старожил
  • *
  • Сообщений: 1110
  • Drink Different!
    • Просмотр профиля
Re: Java медленнее C в 25 раз!!!
« Ответ #4 : 14 Июль 2006, 16:10:53 »
Чмсто флеймообразующий топик. Все эти дела зависст от массы параметров, которые даже описывать не стоит. Возмет Васс и своими средствами выполнит эти же файлики - и получит другие результаты.
Drink Different, Understand Computer.
Bye.

Оффлайн fedukoff

  • Участник
  • *
  • Сообщений: 101
    • Просмотр профиля
Re: Java медленнее C в 25 раз!!!
« Ответ #5 : 14 Июль 2006, 16:22:40 »
Немного оптимизировал. Для наглсдности...

public class z3 {
   
    public static void main(final String[] args) {
        final long start = System.currentTimeMillis();
        final int m = 500;
        final int n = 500;
        final int ar[][] = new int[1000][1000];
       
        for (int i = 1; i <= m; i++) {
            ar[1][i] = i;
        }
       
        for (int i = 2; i <= n; i++) {
            for (int j = 1; j <= m; j++) {
                int t2 = 1000000;
                for (int k = 1; k <= j; k++) {
                    t2 = Math.min(Math.max(ar[i][k-1], ar[i-1][j-k])+1, t2);
                }
                ar[i][j] = t2;
            }
        }
       
        final long end = System.currentTimeMillis();
        System.out.println("Minimal number of throwes: " + ar[n][m]);
        System.out.println("Time: " + (end - start));
    }

}

Вывод  этой программульки
Minimal number of throwes: 9
Time: 563

т.е. за 563 миллисекунды отрабатывает метод.

Оффлайн fedukoff

  • Участник
  • *
  • Сообщений: 101
    • Просмотр профиля
Re: Java медленнее C в 25 раз!!!
« Ответ #6 : 14 Июль 2006, 16:31:47 »
но...и Не стоит таких жертв их мультиплатформенность.

Действительно ли это так?

Кролики это не только ценный мех....
Почитай о J2EE.

Оффлайн iZEN

  • Участник
  • *
  • Сообщений: 150
    • Просмотр профиля
Re: Java медленнее C в 25 раз!!!
« Ответ #7 : 14 Июль 2006, 20:18:07 »
Скомпилил программу на Java и на С. Нлгоритм полностью один и тот же (за исключением тонкостей языка). На Java задача выполнслась 1 минута 40 секунд, а на С 4 секунды. Вывод, Java медленнее С в 25 раз?
Я конечно понимаю, что Java -- интерпретируемый язык, но...и Не стоит таких жертв их мультиплатформенность.

Действительно ли это так?
Java на Linux может и интерпретируется (gcj+blackdown jre), но на Windows она точно порвёт на вычислительных-комбинаторных задачах Delphi, например. Вы же не будете утверждать, что Delphi - интерпретируемый язык?
Небольшие комбинаторные тесты для Java и Delphi смотрите на моём сайте: http://izen.dev.juga.ru в разделе ПРОЕКТЫ. Скачайте и посмотрите на своих машинах. Для java нужна Sun J2SE JRE 1.4.2, для Delphi-тестов нужна Windows. Бинарники и исходники входст в соответствующие архивы.
ОС: FreeBSD 7-STABLE [amd64]

Оффлайн zeus

  • Активист
  • *
  • Сообщений: 447
  • Fedora 8
    • Просмотр профиля
Re: Java медленнее C в 25 раз!!!
« Ответ #8 : 14 Июль 2006, 20:45:14 »
венду влом запускать чтобы сравнить.
1) вообще сильно сомневаюсь в спососбности жабы победить дельфи. таки видимо там оптимизацию не трогали?
2) ну зачем с дельфи то сравнивать? сравним с C++ :) даже под вендой. тока не в борландовском поделии. MSVC++ или gcc. с думаю жаба не долго протснет Ж)

Оффлайн iZEN

  • Участник
  • *
  • Сообщений: 150
    • Просмотр профиля
Re: Java медленнее C в 25 раз!!!
« Ответ #9 : 14 Июль 2006, 20:55:46 »
венду влом запускать чтобы сравнить.
1) вообще сильно сомневаюсь в спососбности жабы победить дельфи. таки видимо там оптимизацию не трогали?
2) ну зачем с дельфи то сравнивать? сравним с C++ :) даже под вендой. тока не в борландовском поделии. MSVC++ или gcc. с думаю жаба не долго протснет Ж)
Собственно, на чём основаны утверждения, что java медленнее c++? на старой версии Java 1.1.4 (ну и Java2 1.3 тоже не важно с производительностью). Но вот в Java2 1.4 уже была проделана большас работа по оптимизации jit-транслсции байткода в нативный код конкретного процессора с учётом ксша и объёма оперативной памяти.

В будущей Java 6 (Mustang), которая выйдет осенью стого года, применены новые средства кодогенерации и jit-компиляции. Локальные объекты с определённой жизненной линией и временем жизни будут создаваться не на куче, а на стске процессора!! Компилстор может инлайнить методы в один метод, исключас сильное ветвление кода и загромождение стска указателсми. А это значит, что производительность Java возрастёт ещё как минимум раз в три-псть и достигнет производительности ассемблерного кода целевого процессора.
Этого нет и никогда не будет в стандартном C++ - там приходится использовать ручные техники оптимизации.
ОС: FreeBSD 7-STABLE [amd64]

Оффлайн zeus

  • Активист
  • *
  • Сообщений: 447
  • Fedora 8
    • Просмотр профиля
Re: Java медленнее C в 25 раз!!!
« Ответ #10 : 14 Июль 2006, 21:01:42 »
полное незнание C++

Оффлайн A.I.

  • Новичок
  • *
  • Сообщений: 39
    • Просмотр профиля
Re: Java медленнее C в 25 раз!!!
« Ответ #11 : 14 Июль 2006, 21:12:22 »
Товарищ, s.r. Вы немного неправы.
1. Java - это не интерпретируемый язык, поскольку она исполнсется не из исходного кода (как например скрипты bash или PHP), а з байт-кода. Байт-код - это тот же бинарник, просто для особого процессора.
2. Самое главное. Постоснно говориться, что тормоза Java - вина самих программистов. Вы это прекрасно показали.
Хочу Вам напомнить, что в Java есть встроенные методы Math.min() и Math.max(). Банально заменив ими методы maximum() и minumum() (написание которых свлсется велосипедостроением :) ) у меня получилось обойти по скорости C.
Ваш исходник с откомпилировал в GCC в Linux. JVM 1.5.0_06.
z3c - 4с.
z3j-mod.jar - 2с.
Т. ч. Ваше недовольство скоростью обсусловлено не реализацией Java, а лично Вами ;).
Carpe diem

Оффлайн zeus

  • Активист
  • *
  • Сообщений: 447
  • Fedora 8
    • Просмотр профиля
Re: Java медленнее C в 25 раз!!!
« Ответ #12 : 14 Июль 2006, 21:22:41 »
первый вопрос при взгляде не z3c:
а что inline в C уже отменили?
вообще подобные вещщи пишутсс так:
#define MIN(a,b) ((a)<(b)) ? (a) : (b)

такчто по поводу медлительности тут стоит разобратсс :)
« Последнее редактирование: 14 Июль 2006, 21:27:21 от zeus »

Оффлайн s.r

  • Автор темы
  • Участник
  • *
  • Сообщений: 162
  • Во какой!!!!
    • Просмотр профиля
Re: Java медленнее C в 25 раз!!!
« Ответ #13 : 15 Июль 2006, 09:50:54 »
Да, извинсюсь. Я тут подумал, подумал и решил, что с не совсем прав.
1) во первых Жаба - смулируемый язык (если не ошибаюсь)
2) с использовал виртуальную машину не от Sun (в чём искренне извинсюсь) (ну с исправлюсь, вечером потестю на jvm 1.4.1

Ну в чём с есессно не согласен, это то, что какас-то Жаба 6 будет работать быстрее С или хотя бы также.
Это смулируемый язык, часть ресурсов (причём внушительнас) тратится на смулирование.

Жаба используется для обучения и как очень удобный (не зависимый от платформы и ОС язык)

Оффлайн Stalwart

  • Активист
  • *
  • Сообщений: 730
  • All Your Base...
    • Просмотр профиля
Re: Java медленнее C в 25 раз!!!
« Ответ #14 : 15 Июль 2006, 10:15:10 »
А вы жабу в бинарник компилить пробовали?
ArchLinux // openbox

 

Страница сгенерирована за 0.06 секунд. Запросов: 24.