Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Очередные данные о "медленности" JAVA 
:(
    Опции темы
AntonSaburov
Дата 18.6.2004, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



PM MAIL WWW ICQ   Вверх
LSD
Дата 18.6.2004, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Я где то видел подобный тест, для теста была выбранна игра жизнь, и проводился замер времени затраченного на N итераций. И Java там себя показала тоже очень достойно. Предлагаю провести такое тестирование самостоятельно. Кто хочет покчаствовать пишите.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
redrick
Дата 18.6.2004, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 547
Регистрация: 7.1.2004
Где: Москва

Репутация: 3
Всего: 5



спасибо большое - впервые увидел подобные тесты, до этого слышал только что Java обгоняет C++ на Sun Sparc, что вроде как не так впечатляет. Сплош и рядом сионисты кричат, что дескать виртуальная машина - это гроб в плане производительности


--------------------
Имею Мнение Хрен Оспоришь   
PM MAIL ICQ   Вверх
Domestic Cat
Дата 18.6.2004, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



JIT / HotSpot переводит bytecode в нативныи, так что подобная скорость неудивительна smile.gif

Это сообщение отредактировал(а) Domestic Cat - 18.6.2004, 23:56


--------------------

PM   Вверх
Domestic Cat
Дата 20.6.2004, 00:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Две программы:

Код

// C
#include <stdio.h>
#include <time.h>

unsigned int f;
unsigned int factorial (unsigned int a);

main()
{  
   clock_t t1 = clock();
   int i;
   for (i = 0; i < N; i++)
   {
       f = factorial(100);
   }
   clock_t t2 = clock();
   printf("\n Program execution time is %u milliseconds \n", (t2 - t1) * 10);
}

unsigned int factorial(unsigned int a)
{
   if (a == 1) return 1;
   else
   {
       a *= factorial(a - 1);
       return a;
   }
}

Код

// Java
public class Test
{
   public static void main(String [] args)
   {
       long t1 = System.currentTimeMillis();
       int f;
       for (int i = 0; i < N; i++)
       {
           f = factorial(100);
       }
       System.out.println("\n Program execution time is " + (System.currentTimeMillis() - t1) +
                                      "   milliseconds");    
   }
   public static int factorial(int a)
   {
       if (a == 1) return 1;
       else
       {
           a *= factorial(a - 1);
           return a;
       }
   }
}

Я использовал си компилятор
Код

gcc (GCC) 3.3 20030304 (Apple Computer, Inc. build 1495)
Copyright (C) 2002 Free Software Foundation, Inc.

и Java
Код

java version "1.4.2_03"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_03-117.1)
Java HotSpot(TM) Client VM (build 1.4.2-34, mixed mode)

Вот результаты нескольких запусков,

C обозначает
gcc -o test test.c
./test

C1 -
gcc -O -o test test.c
./test

C3 -
gcc -O3 -o test test.c
./test

Java -
javac -O Test.java
java Test

(Программа всегда выдает "Program execution time is x milliseconds", я привожу только число)
N - число циклов с программе, всего привожу по три результата. Результаты для javc -O Test.java и javac Test.java практически не отличаются.
Код

N = 1000000

  C          C1      C3       Java
6710       2710     2710    4660
6630       2740     2770    4646
6620       2650     2820    4550


Код

N = 100000

  C          C1        C3         Java
700        300        280      429
680        290        280      431
660        280        270      443



Код

N = 10000

  C           C1         C3       Java
 70           20         30        40
 70           30         30        31
 70           30         30        29


Это сообщение отредактировал(а) Domestic Cat - 20.6.2004, 00:23


--------------------

PM   Вверх
Domestic Cat
Дата 21.6.2004, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Повторил тест, только усреднил время по 20 запускам и добавил

JavaS обозначает
javac Test.java
java -server Test

Цифры - среднее время выполнения в ms (чем меньше тем лучше)
Код

N = 1000000

C         6693
C1       2741
Java    2759.55    
JavaS  2589.8


Код

N = 100000

C         667.5
C1       282         
Java     262.45    
JavaS   260.95


Код

N = 10000

C         67.5      
C1       29        
Java    26.8   
JavaS  26.4


smile.gif smile.gif biggrin.gif

Это сообщение отредактировал(а) Domestic Cat - 21.6.2004, 16:51


--------------------

PM   Вверх
LSD
Дата 23.6.2004, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Наконец нашел время заняться этим делом smile.gif .
Прогнал тест Domestic Cat и вот что получил:
Использовался компилятор Microsof Visual C++ 6.0, Borland C++ Builder 6.0 с предустановками Release и Optimisation: perfomance. Для Java использовалась JDK 1.4.2_01, копилировалась с ключами -O и -g:none.
AMD Athlon XP 2000, RAM 768Mb, Windows XP Pro SP1
Код

Borland C++ Builder | Microsoft Visual C++ | Java client VM | Java server VM
--------------------+----------------------+----------------+----------------
            77,192с |              68,211с |        70,391с |        42,547с

Intel Celeron 1300, RAM 256Mb, Windows 2000 Pro SP4
Код

Borland C++ Builder | Microsoft Visual C++ | Java client VM | Java server VM
--------------------+----------------------+----------------+----------------
           111,192с |              91,651с |       100,272с |        59,901с


Добавлено @ 21:21
Через пару деньков доделаю програмку жизнь и выложу результаты.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
LSD
Дата 27.6.2004, 22:40 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



В коде Domestic Cat есть небольшая ошибка, факториал 100 не поместится в 4-х байтовое целое, исправил ее и заодно скомпилил под Delphi получились очень интерестные результаты:
Код
Borland C++ Builder | Borland Delphi | Microsoft Visual C++ | Java client VM | Java server VM
--------------------+----------------+----------------------+----------------+----------------
             102,7  |           97,2 |                 96,5 |           78,9 |           38,6

это усредненные результаты после 10 запусков. Четно говоря столь слильного преимущества Java я не ожидал.
Добавлено @ 22:42
Забыл указать:
Машина: AMD Athlon XP 2000, RAM 768Mb, Windows XP Pro SP1
Компиляторы: Borland Delphi 5.5 и плюс те же что и ранее.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Sardar
Дата 27.6.2004, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 4
Всего: 317



Результаты впечатляют. По моему у серверной Явы коронка: быстрые вызовы функций(тоже где то в тесте было). Факториал вычисляется рекурсивно, отсюда и столь впечатляющий результат... наверное... smile.gif


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
LSD
Дата 19.3.2005, 02:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



В связи с очередными дускусиями Java v.s. C++ решил поднять темку.

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

У меня есть готовый код для Java и C#, для C++ надо чтобы кто-нить взялся его написать, т.к. я с ним не знаком. Программа порождает много объектов, можно будет посмотреть где сборщик мусора эффективней и что выгодней сборщик мусора или ручное выделение памяти.


Присоединённый файл ( Кол-во скачиваний: 77 )
Присоединённый файл  Life.zip


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Domestic Cat
Дата 19.3.2005, 02:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



НЕ понял, ты с шарпом не знаком или С++? Если шарп - то я возьмусь.
Добавлено @ 02:32
Все, вопрос снят, нужен С++.


--------------------

PM   Вверх
LSD
Дата 19.3.2005, 02:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Лекции по С++, я прогуливал smile


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Domestic Cat
Дата 19.3.2005, 02:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



На это дело надо С++ шников брать, иначе обвинят smile


--------------------

PM   Вверх
chipset
Дата 19.3.2005, 06:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: нет
Всего: 164



Цитата(Domestic @ 18.3.2005, 15:40)
На это дело надо С++ шников брать, иначе обвинят smile

А в чём собссна дело? smile Мы вылижем код до дыр smile
Что, где, когда писать?
Добавлено @ 06:36
Увидел Ж)

Это сообщение отредактировал(а) chipset - 19.3.2005, 06:36


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Domestic Cat
Дата 19.3.2005, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Ну, у меня C# и Java наравне - при компиляции jikes -g:none -O , флаге -server и подборе -Xmn.


--------------------

PM   Вверх
LSD
Дата 19.3.2005, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



У меня C# быстрее на 5%. Компилятор javac -g:none, флаг -server использовал а с -Xmn, не пробовал играться, надо будет попробовать.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Domestic Cat
Дата 19.3.2005, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



По моим субъективным ощущениям jikes дает более быстрый код, как-нибудь проверю.


--------------------

PM   Вверх
chipset
Дата 3.4.2005, 07:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: нет
Всего: 164



Народ, обьясните как такое может "логически", чтобы интерпретатор работал быстрее ассемблерного кода?


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Domestic Cat
Дата 3.4.2005, 07:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Дык не ассемблерного, а С++шного, - две большие разницы smile
http://www.javaworld.com/javaworld/jw-02-1...02-jperf_p.html


--------------------

PM   Вверх
chipset
Дата 3.4.2005, 07:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: нет
Всего: 164



Там у них в тестах:
Simple Loop 46K(С++) vs 3.9K(Java)
Они наверное в Debug компилили, я делал ActiveX 2 кб smile

Это сообщение отредактировал(а) chipset - 3.4.2005, 07:29


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Domestic Cat
Дата 3.4.2005, 07:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



То ж не просто цикл, там ряд мат операций, и т п, в любом случае С++ шный код будет больше.


--------------------

PM   Вверх
LSD
Дата 7.9.2005, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



После недавней дискусси с Се ля ви, решил поднять некоторые тесты которые мы гоняли на работе и прогнать их еще раз.
Сам код представляет собой итерацию по 2-м массивам, вычисление разности и запись результата в третий массив (нам это было необходимо для обработки видеоизображения). На скорость тестировались:
  • Sun JVM build 1.5.0_01-b08, mixed mode
  • Bea JRockit build dra-45238-20050523-2021-win-ia32
  • Microsoft 32-bit C/C++ Optimizing Compiler Version 13.00.9466 for 80x86
Тесты запускались на следующей машине: P4 3.06Ghz, 512Mb RAM, Windows XP Pro SP2. Java код компилировался соответсвующей JDK (Sun - Sun JDK, BEA - BEA JDK), с ключом -g:none. Ключи запуска такие:
Sun: -Xms50M -Xmx200M -server
BEA: -Xms50M -Xmx200M -jrockit
Были получены следующие результаты:
Код
JVM: BEA Systems, Inc. , dra-45238-20050523-2021-win-ia32
  calculation time = 26368ms (10000 iterations)
  calculation time = 26369ms (10000 iterations)
  calculation time = 26400ms (10000 iterations)

JVM: Sun Microsystems Inc. , 1.5.0_01-b08
  calculation time = 22119ms (10000 iterations)
  calculation time = 22164ms (10000 iterations)
  calculation time = 22960ms (10000 iterations)

Microsoft C++
  calculation time = 22188ms (10000 iterations)
  calculation time = 23563ms (10000 iterations)
  calculation time = 23496ms (10000 iterations)
  calculation time = 23531ms (10000 iterations)

Для Sun JVM один раз было полученно время ~20 сек, но так как оно сильно выделяется на фоне остальных запусков и повторить эксперимент не получилось, в расчет я его не брал. Для C++, тоже замечена странная особенность, первый запуск теста выполняется быстрее последующих на ~1.3 сек, в чем проблема я так и не понял, но результат оставил.


Это сообщение отредактировал(а) LSD - 7.9.2005, 10:05

Присоединённый файл ( Кол-во скачиваний: 22 )
Присоединённый файл  src.zip 4,38 Kb


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
aquaserpent
Дата 7.9.2005, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 15.8.2005

Репутация: нет
Всего: нет



Исходя из примера в MSDN функция clock() возвращает время в миллисекундах:
Код

/* Pauses for a specified number of milliseconds. */
void sleep( clock_t wait )
{
   clock_t goal;
   goal = wait + clock();
   while( goal > clock() )
      ;
}

Тогда совершенно не понятно, зачем это время умножать на 10 в пятом посте в примере?..
Код

printf("\n Program execution time is %u milliseconds \n", (t2 - t1) * 10);


Это сообщение отредактировал(а) aquaserpent - 7.9.2005, 16:52
PM   Вверх
bars_uz
Дата 7.9.2005, 16:58 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 106
Регистрация: 26.3.2005
Где: Tashkent

Репутация: нет
Всего: нет



Ya neponemayau ,, cheta vizde ideot spor na temu Java vs C++... Bratani ya odnu vesh ponyal, chto oba yzika otlichnie..
oba yzika lutshe pod kakoeta zadach...
no ya dumayu vseotaki Java na odin shag vperedi...
PM MAIL ICQ   Вверх
LSD
Дата 7.9.2005, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



bars_uz во первых у меня просьба не писать транслитом, тяжело читать, если есть проблемы с русской раскладкой используй чекбокс "транслит".

Во вторых подобные вопросы не всегда связанны с "религиозными войнами". Например я гонял последний тест, для того чтобы выяснить насколько пригодна Java для применения в нашем проекте.

Ну и наконец, должен же быть у нас заготовлен "наш ответ Чемберлену" smile


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
aquaserpent
Дата 7.9.2005, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 15.8.2005

Репутация: нет
Всего: нет



Не знаю как в остальных тестах, а в первом примере просто неправильно замеряется время в сишном примере. Его нужно просто поделить на 10 (точнее не умножать на 10). И все становится на свои места...

Это сообщение отредактировал(а) aquaserpent - 7.9.2005, 22:52
PM   Вверх
Mayk
  Дата 9.9.2005, 07:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: нет
Всего: 134



Цитата(aquaserpent @ 7.9.2005, 20:46)
Исходя из примера в MSDN функция clock() возвращает время в миллисекундах:

Цитата(aquaserpent @ 8.9.2005, 02:47)
Не знаю как в остальных тестах, а в первом примере просто неправильно замеряется время в сишном примере. Его нужно просто поделить на 10 (точнее не умножать на 10). И все становится на свои места...

Вы не правы. Котъ писал,
Цитата(Domestic @ 20.6.2004, 04:16)

Я использовал си компилятор
gcc (GCC) 3.3 20030304 (Apple Computer, Inc. build 1495)
Copyright © 2002 Free Software Foundation, Inc.

Поэтому MSDN тут не при чём.
Вообще по Стандарту CLOCKS_PER_SEC = 1000000. А ни 1000, как сделано у мс. Пасикс не указ мелкомягким, а последние не указ пасиксу. Не знаю про cps в апплах, не юзал. Судя по *10, он им тоже не указ. Кстати, мне почему-то кажется, что Доместик 4 секунды от 0.4 отличил бы. Ну я бы, к примеру, отличил.

Проведем еще раз тест.
Результаты для 1000000 итераций(без всяких оптимизаций, чтоб за цикл никто ничего не выкинул)
Java: 1984, 2000, 2000, 1985 ms
Борла: 1500, 1500, 1500, 1531(*10 убрано) ms
VS2003: Дебаг: 11016ms((*10 убрано) 11 СЕКУНД НАФИГ. 11 секунд явно длятся больше секунды. Я уж думал, повисла). Релиз: 0ms(!!!). Фтопку. Фигня какая-то.

Ну и где опережение в десять раз, чтоб всё встало на свои места? Я пока вижу(Visual'но - черное окно в течение 10 секунд) только ухудшение в десять раз в вязанке. В ней делить надо на 10, чтоб она не выбивалась.

Давайте проведем масштабное сравнение компилеров, а? Ну пжалуста. smile smile

зы. В следующий раз, прежде чем кричать "*10 - это не правильно" либо проверьте сами, либо подумайте, совпадает насколько ваш clock() совпадает с clock()'ом проверяющего:

Цитата(http)

Fri, 05 Nov 2004 15:28:44 +0100 =?ISO-8859-1?Q?Anders_F_Bj=F6rklund?= <afb xx algonet.se>  writes:
Thomas Kuehne wrote:
> On POSIX systmes like Linux std.c.time.CLOCKS_PER_SEC should be 1000000 and
> not 1000.
And on Darwin BSD (Mac OS X), it should be 100.


Это сообщение отредактировал(а) Mayk - 9.9.2005, 07:58


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Metal_Heart
Дата 9.9.2005, 09:16 (ссылка) |  (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


а почему бы и нет?
**


Профиль
Группа: Участник
Сообщений: 728
Регистрация: 31.3.2005
Где: Москва

Репутация: 4
Всего: 12



Mayk, очень прошу, ненадо жаргона, я в твоем посте нить теряю

Чтобы это значило?
Цитата(Mayk @ 9.9.2005, 07:27)
VS2003: Дебаг: 11016ms((*10 убрано) 11 СЕКУНД НАФИГ. 11 секунд явно длятся больше секунды. Я уж думал, повисла). Релиз: 0ms(!!!). Фтопку. Фигня какая-то.





--------------------
 не стыдно учиться, а стыдно не учиться 
PM ICQ   Вверх
aquaserpent
Дата 9.9.2005, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 15.8.2005

Репутация: нет
Всего: нет



Mayk, при чем здесь мелкомягкие? Неужели Вы считаете, что одна и та же СИШНАЯ (а не мелкомягковская) функция будет возвращать разные значения под разными компиляторами? smile Может еще и printf будет другим цветом печатать? smile Нет уж, извините. Есть стандарт языка..
А MSDN, в общем-то, является очень даже авторитетным справочником. И прежде чем "кричать" (как Вы заявляете) я ображаюсь к документации. Теперь подтверждени (модифицированный пример).
Код

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

unsigned int f;
unsigned int factorial (unsigned int a);

#define N  1000000

main()
{   
   clock_t t1 = clock();
   int i, j, k;
   k = 0;
   for (j = 0; j < 100; j++) {
       for (i = 0; i < N; i++) {
           f = factorial(100);
       }
       k += f;
   }
   clock_t t2 = clock();
   printf("\n Program execution time is %u milliseconds \n", (t2 - t1) * 10);


unsigned int factorial(unsigned int a)
{
   if (a == 1) return 1;
   else 
   {
       a *= factorial(a - 1);
       return a;
   }
}

Код

public class Test
{
   private final static int N = 1000000;
   public static void main(String [] args)
   {
       long t1 = System.currentTimeMillis();
       int f;
    int i, j, k;
    k = 0;
    for (j = 0; j < 100; j++) {
         for (i = 0; i < N; i++)  {
           f = factorial(100);
       k += f;
         }
    }
       System.out.println("\n Program execution time is " + (System.currentTimeMillis() - t1) + 
                                      "   milliseconds");    
   }
   public static int factorial(int a) 
   {
       if (a == 1) return 1;
       else 
       {
           a *= factorial(a - 1);
           return a;
       }
   }
}

Засекаем время секундомером. Java - 128 cек. CPP - 85 сек (плюс/минус секунда погоды не делает). Теперь то, ЧТО ВЫДАЕТ ПРОГРАММА. Java - 128032. CPP - 845150. Ничего не смущает??? Так что MSDN в очередной раз оказался на высоте. А доку читать надо. smile
А мерять время в Debug или умножать реальное время на 10 smile
PM   Вверх
Domestic Cat
Дата 9.9.2005, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Цитата(aquaserpent @ 9.9.2005, 01:13)
Засекаем время секундомером.

На какой оси засекалось?

Цитата(aquaserpent @ 9.9.2005, 01:13)
Так что MSDN в очередной раз оказался на высоте.

Ага, прям так щас. С каких это пор МСДН имеет хоть какое-то отношение к Макинтошу?

Кстати, доки действительно надо читать. На маздае 1000, на дарвине (мак ос х, который я и пользовал) - 100. 1/CLOCS_PER_SEC = количество секунд за один тик. Чтоб перевести в миллисекунды, домножаем числитель и знаменатель на 10. Знаменатель выбрасываем (в Java коде все итак в мс) и получаем то что надо.

Так что читайте мануалы и не верьте в кроссплатформенность си.



--------------------

PM   Вверх
aquaserpent
Дата 9.9.2005, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 15.8.2005

Репутация: нет
Всего: нет



Я замерял под Win2000 Prof.
Согласитесь, что результат говорит сам за себя.

Дело не в том, на сколько программа на Java работает медленне, чем на С. Дело в том, что по вашим тестам она (программа на Java) работает БЫСТРЕЕ. А это неправильно. Элементарное правило треугольника: AB+BC <= AC.

Это сообщение отредактировал(а) aquaserpent - 9.9.2005, 13:45
PM   Вверх
LSD
Дата 9.9.2005, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(aquaserpent @ 9.9.2005, 14:40)
Согласитесь, что результат говорит сам за себя.

Не согласен. Ты вообще ничего не указал, ни ключей запуска, ни версию JVM, ни конфигурацию машины, ни компилятора. Да и противоречие с теми тестами что я гонял разительное, вообщем [i]не верю[b].


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
aquaserpent
Дата 9.9.2005, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 15.8.2005

Репутация: нет
Всего: нет



Цитата(LSD @ 9.9.2005, 13:44)
Цитата(aquaserpent @ 9.9.2005, )
Согласитесь, что результат говорит сам за себя.

Не согласен. Ты вообще ничего не указал, ни ключей запуска, ни версию JVM, ни конфигурацию машины, ни компилятора. Да и противоречие с теми тестами что я гонял разительное, вообщем [i]не верю[b].

Ну, верить или не верить, это дело личное. Не верите - проверьте.
Я компилировал VS6.0 (Release, естесственно). Никаких дополнительных настроек не ставил, т.е. все по умолчанию.
Java - jdk1.5.0_01. Компилировал с теми же параметрами, что и в самом первом примере.

Машина - PIV-2400, 512Mb.

Хотя это все и не имеет значения.

Это сообщение отредактировал(а) aquaserpent - 9.9.2005, 13:55
PM   Вверх
LSD
Дата 9.9.2005, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(aquaserpent @ 9.9.2005, 14:49)
Не верите - проверьте.

Без дополнительных сведений не проверишь smile


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Mayk
Дата 9.9.2005, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: нет
Всего: 134



Цитата(Metal_Heart @ 9.9.2005, 13:16)
Чтобы это значило?
Цитата (Mayk @ 9.9.2005, 07:27)
VS2003: Дебаг: 11016ms((*10 убрано) 11 СЕКУНД НАФИГ. 11 секунд явно длятся больше секунды. Я уж думал, повисла). Релиз: 0ms(!!!). Фтопку. Фигня какая-то.

VS2003. - запускаем новый сишный проект под vs2003.
Дебаг: 11016ms - время выполнение(11016ms) выведенное на экран в режиме Debug(а не Release) и запущенное через Start а не через Start without debugging. Если сделать Start without debugging, то время измениться не значительно. Что-то около плюс-минус 100 мс.
11 СЕКУНД НАФИГ. 11 секунд жизни Mayk'а потрачены зря smile
11 секунд явно длятся больше секунды - это не ошибка вывода на экран, прошло действительно 11 секунд
(*10 убрано) - в коде (t2-t1)*10 убрано умножение на 10, чтобы результат соответствовал действительности.
Я уж думал, повисла - мат по поводу тормознутости кода.
Релиз: - в конфигурации Release.
0ms - время, выведенное на экран.
(!!!) - удивился
Фтопку. - еще один мат, по поводу оптимизации кода(шибко умная)
Фигня какая-то - так нельзя тестировать и сравнивать. Очевидно, factorial() был выкинут из цикла.
Надеюсь понятно объяснил smile

Цитата(aquaserpent @ 9.9.2005, 14:13)
Ничего не смущает??

Смущает то, что код для мака был запущен на винде.

Цитата(aquaserpent @ 9.9.2005, 14:13)
А MSDN, в общем-то, является очень даже авторитетным справочником.

Авторитеты авторитетам врознь-
Цитата

CLOCKS_PER_SEC is defined to be one million in <time.h>.


Цитата(aquaserpent @ 9.9.2005, 14:13)
А доку читать надо.

Согласен.

Это сообщение отредактировал(а) Mayk - 9.9.2005, 14:02


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Metal_Heart
Дата 9.9.2005, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а почему бы и нет?
**


Профиль
Группа: Участник
Сообщений: 728
Регистрация: 31.3.2005
Где: Москва

Репутация: 4
Всего: 12



smile


--------------------
 не стыдно учиться, а стыдно не учиться 
PM ICQ   Вверх
aquaserpent
Дата 9.9.2005, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 15.8.2005

Репутация: нет
Всего: нет



А что? Секундомер (обычные часики) при запуске на маке по-другому работает и Java-программа начинает работать быстрее сишной? smile
А тестить на скорость дебаг-версию... Это ж надо так себя не уважать...
PM   Вверх
Coocky
Дата 9.9.2005, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: нет
Всего: 62



Да не, мужики, ну не верю, что "виртуальная" java быстрее "неуправляемого" С++ работала smile
Хоть тестите,хоть не тестите.


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
AntonSaburov
Дата 9.9.2005, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



Цитата(Coocky @ 9.9.2005, 17:40)
Да не, мужики, ну не верю, что "виртуальная" java быстрее "неуправляемого" С++ работала

Да сколько раз можно рассказывать, что JIT на лету генерит нативный код для метода. И когда ты вызываешь этот метод снова, то он уже фактически в двоичном коде. На конференции разработчики говорили, что они сделали так, что даже научились переключаться при работе метода с байт-кода на нативный. Т.е. раньше JIT работал только при выходе из метода. А первый раз сидишь под байт-кодом. Так вот теперь JAVA будет переключаться даже без выхода из метода. И код оптимизирован может быть под процессор. Т.е. под конкретную можель. А exe уже не оптимизируешь. Какой код есть, такой будет на любой машине.
Добавлено @ 18:02
Понятно, что время на JIT теряется. На первое время. Но после него получаем фактически двоичный код. Нет уже никакого байт-кода. Забудь.

А если учитывать, что такого рода приложения крутятся круглосуточно, то понятно, что большая часть кода уже нативная.

На конференции вообще говорили про разработку Real Time Java.
PM MAIL WWW ICQ   Вверх
LSD
Дата 9.9.2005, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(Coocky @ 9.9.2005, 18:40)
Да не, мужики, ну не верю, что "виртуальная" java быстрее "неуправляемого" С++ работала smile
Хоть тестите,хоть не тестите.

Это уже прям религия какая-то получается smile
Верую ибо С++...


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Domestic Cat
Дата 9.9.2005, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Цитата(aquaserpent @ 9.9.2005, 04:40)
Дело не в том, на сколько программа на Java работает медленне, чем на С. Дело в том, что по вашим тестам она (программа на Java) работает БЫСТРЕЕ. А это неправильно. Элементарное правило треугольника: AB+BC <= AC.

По тестам получалось, что Java быстрее си после неоптимизированной компиляции, и медленнее оптимизированной компиляции. Да это и на глаз было видно при большом количестве итераций. О чем тут спорить непонятно.

Цитата(Coocky @ 9.9.2005, 08:40)
Да не, мужики, ну не верю, что "виртуальная" java быстрее "неуправляемого" С++ работала smile
Хоть тестите,хоть не тестите.

Сейчас все виртуальные машины используют JIT. Потому верить тут нечему - это тот же си. А там все зависит от того, насколько компилер умный.


--------------------

PM   Вверх
batigoal
Дата 9.9.2005, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 24
Всего: 151



Цитата(AntonSaburov @ 9.9.2005, 19:00)
На конференции разработчики говорили, что они сделали так, что даже научились переключаться при работе метода с байт-кода на нативный.

Ты вчера был, да? Я не смог.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Се ля ви
Дата 24.9.2005, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java/SOAрхитектор
****


Профиль
Группа: Модератор
Сообщений: 2016
Регистрация: 5.6.2004
Где: place without tim e and space

Репутация: 8
Всего: 127



Цитата(LSD @ 7.9.2005, 10:03)
После недавней дискусси с Се ля ви, решил поднять некоторые тесты которые мы гоняли на работе и прогнать их еще раз.


Цитата(LSD @ 7.9.2005, 10:03)
# Sun JVM build 1.5.0_01-b08, mixed mode
# Bea JRockit build dra-45238-20050523-2021-win-ia32

LSD, ну ты б ещё с JVM 1.0 95-го года сравнил! smile
Ну если уж пятёрку sun`овскую берёшь - бери и соответственно пятёрку BEA JRockit! Естественно, что с выходом новых версий кучу всего оптимизируют и сравнивать разные версии, IMHO, просто некорректно.

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

P.S. Вообще же серверную JVM и клиентскую не очень хорошо сравнивать ещё и по вот какой причине - к серверной машине гораздо выше требования надёжности и долговечности. Например, sun`овская считается клиентской и не рассчитана на то, что треды живут очень долго. Если тред крутится уже целый месяц, он может взять и умереть. Если запускаешь программы и работаешь в них, то это не критично, а вот когда у тебя крутится на корпоративном сервере какая-нибудь зверская система автоматизации типа 24/7 - это очень даже критично!

Это сообщение отредактировал(а) Се ля ви - 24.9.2005, 18:20


--------------------
  )
 (
[_])
проф. блог

Кролики думали, что занимаются любовью, а на самом деле их просто разводили...
PM MAIL WWW Skype GTalk   Вверх
LSD
Дата 24.9.2005, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата
LSD, ну ты б ещё с JVM 1.0 95-го года сравнил!
Ну если уж пятёрку sun`овскую берёшь - бери и соответственно пятёрку BEA JRockit! Естественно, что с выходом новых версий кучу всего оптимизируют и сравнивать разные версии, IMHO, просто некорректно.

А это что по твоему???
Это JRockit 5.0 взято отсюда, последний релиз.

Цитата
Если у тебя нет - можешь выложить исходник этого теста, я у себя прогоню-посмотрю.

В том посте есть аттачмент, угадай что там smile


Цитата
Например, sun`овская считается клиентской и не рассчитана на то, что треды живут очень долго. Если тред крутится уже целый месяц, он может взять и умереть.

Считается кем? И вообще откуда такая информация насчет тредов?


Цитата
P.S. Вообще же серверную JVM и клиентскую не очень хорошо сравнивать ... а вот когда у тебя крутится на корпоративном сервере какая-нибудь зверская система автоматизации типа 24/7 - это очень даже критично!

Вообщем это конечно да, но гонять тесты непрерывно хотя бы месяц, нет возможности ни у меня, ни у тебя.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Се ля ви
Дата 24.9.2005, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java/SOAрхитектор
****


Профиль
Группа: Модератор
Сообщений: 2016
Регистрация: 5.6.2004
Где: place without tim e and space

Репутация: 8
Всего: 127



Цитата(LSD @ 24.9.2005, 18:37)
Это JRockit 5.0 взято отсюда, последний релиз.

Сорри, чего-то я туплю, мне покзалось, что у тебя четвёрка была... smile Странно, почему такой номер версии?.. Кароче мой косяк, каюсь. smile

Цитата(LSD @ 24.9.2005, 18:37)
Цитата (Се ля ви @ 24.9.2005, 19:19)
Например, sun`овская считается клиентской и не рассчитана на то, что треды живут очень долго. Если тред крутится уже целый месяц, он может взять и умереть.

Считается кем? И вообще откуда такая информация насчет тредов?

Это мне препод из "Ланита" рассказывал, когда я ему соответствующий вопрос задал. С его слов информация.

Цитата(LSD @ 24.9.2005, 18:37)
Цитата (Се ля ви @ 24.9.2005, 19:19)
P.S. Вообще же серверную JVM и клиентскую не очень хорошо сравнивать ... а вот когда у тебя крутится на корпоративном сервере какая-нибудь зверская система автоматизации типа 24/7 - это очень даже критично!

Вообщем это конечно да, но гонять тесты непрерывно хотя бы месяц, нет возможности ни у меня, ни у тебя.

Ну вобщем, да...


--------------------
  )
 (
[_])
проф. блог

Кролики думали, что занимаются любовью, а на самом деле их просто разводили...
PM MAIL WWW Skype GTalk   Вверх
Бонифаций
Дата 28.9.2005, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 827
Регистрация: 15.9.2005
Где: Brisbane

Репутация: 1
Всего: 40



было бы интересно еще с gcj сравнить.




--------------------
 Бонифаций.
 
PM MAIL ICQ Skype GTalk Jabber YIM   Вверх
LSD
Дата 28.9.2005, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата
было бы интересно еще с gcj сравнить.

Займись, а я может повторю твой тест smile
И кстати почему только GCJ?


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Бонифаций
Дата 28.9.2005, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 827
Регистрация: 15.9.2005
Где: Brisbane

Репутация: 1
Всего: 40



Цитата(LSD @ 28.9.2005, 15:27)
Цитата
было бы интересно еще с gcj сравнить.

Займись, а я может повторю твой тест smile
И кстати почему только GCJ?

потому что gcc и gcj это два frontend для одного backend. Так что по результатам проще было бы оценить влияние именно языка.



--------------------
 Бонифаций.
 
PM MAIL ICQ Skype GTalk Jabber YIM   Вверх
Guest
Дата 28.9.2005, 21:09 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











ну вот. Попробовал. В качестве теста взял решето Эратосфена.
Код для жабы:

Код

//  Eratosthenes Sieve prime number benchmark in Java

public class Sieve {

  static String results1, results2;

  public static void main(String[] args) {
     System.out.println("Running Sieve benchmark.");
     System.out.println("This will take about 10 seconds.");
     runSieve();
     System.out.println(results1);
     System.out.println(results2);
     // System.in.read();                        // InputStream
  }

  static void runSieve() {
     int SIZE = 8190;
     boolean flags[] = new boolean[SIZE+1];
     int i, prime, k, iter, count;
     int iterations = 0;
     double seconds = 0.0;
     int score = 0;
     long startTime, elapsedTime;

     startTime = System.currentTimeMillis();
     while (true) {
        count=0;
        for(i=0; i<=SIZE; i++) flags[i]=true;
        for (i=0; i<=SIZE; i++) {
           if(flags[i]) {
              prime=i+i+3;
              for(k=i+prime; k<=SIZE; k+=prime)
                 flags[k]=false;
              count++;
           }
        }
        iterations++;
        elapsedTime = System.currentTimeMillis() - startTime;
        if (elapsedTime >= 10000) break;
     }
     seconds = elapsedTime / 1000.0;
     score = (int) Math.round(iterations / seconds);
     results1 = iterations + " iterations in " + seconds + " seconds";
     if (count != 1899)
        results2 = "Error: count <> 1899";
     else
        results2 = "Sieve score = " + score;
  }
}



Для С

Код

void runSieve()
{
    int SIZE = 8190;
    char flags[SIZE + 1];
    register int i, prime, k, iter, count;
    register int iterations = 0;
    double seconds = 0.0;
    int score = 0;
    long startTime, elapsedTime;

    time(&startTime);
    while (1) {
    count = 0;
    for (i = 0; i <= SIZE; i++)
        flags[i] = 1;
    for (i = 0; i <= SIZE; i++) {
        if (flags[i]) {
        prime = i + i + 3;
        for (k = i + prime; k <= SIZE; k += prime)
            flags[k] = 0;
        count++;
        }
    }
    iterations++;
    time(&elapsedTime);
    elapsedTime -= startTime;
    if (elapsedTime >= 10)
        break;
    }
    seconds = elapsedTime;
    if (count != 1899)
    perror("Error: count <> 1899");
    else {
       score = (int) (iterations / seconds);
       printf("%d iterations in %f seconds\n", iterations,seconds);
       printf("Sieve score = %d\n", score);
    }
}

main(int argc, char *argv)
{
    puts("Running Sieve benchmark.");
    puts("This will take about 10 seconds.");
    runSieve();
}



Результаты - количество итераций за 10 секунд. По простому, чем больше число, тем круче:

Для явы получаем при

gcj --main=Sieve Sieve.java

3968 итераций в секунду.
С оптимизацией, то есть gcj --main=Sieve -O2 Sieve.java, - 8937 итераций в секунду.

Для gcc sieve.c (без оптимизации) 4870 ит/сек
С оптимизацией (gcc -O2 ) - 10503 ит/сек

Для сравнения на обычной яве - примерно 7026 ит/сек (java -Xms50M -Xmx200M --server, транслировалось с -g:none, java -version 1.5.0_04 от Sun )





  Вверх
Бонифаций
Дата 28.9.2005, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 827
Регистрация: 15.9.2005
Где: Brisbane

Репутация: 1
Всего: 40



Это был я в предыдущем сообщении (под именем Guest почему-то получилось)


--------------------
 Бонифаций.
 
PM MAIL ICQ Skype GTalk Jabber YIM   Вверх
LSD
Дата 28.9.2005, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Интерестно, а под чем запускал и машина какая?


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Coocky
Дата 29.9.2005, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: нет
Всего: 62



Интересно, а если сортировку сделать и сравнить?


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
Бонифаций
Дата 29.9.2005, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 827
Регистрация: 15.9.2005
Где: Brisbane

Репутация: 1
Всего: 40



Цитата(LSD @ 28.9.2005, 21:14)
Интерестно, а под чем запускал и машина какая?

машина пентиум 4, 2.4GHz 512M, linux slackware 10.


--------------------
 Бонифаций.
 
PM MAIL ICQ Skype GTalk Jabber YIM   Вверх
AntonSaburov
Дата 29.9.2005, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



Цитата(Guest @ 28.9.2005, 21:09)
3968 итераций в секунду.
С оптимизацией, то есть gcj --main=Sieve -O2 Sieve.java, - 8937 итераций в секунду.

Для gcc sieve.c (без оптимизации) 4870 ит/сек
С оптимизацией (gcc -O2 ) - 10503 ит/сек


Даже если так - то все рвано разница составляет порядка 10%. А это вообщем-то вполне допустимый разброс. И вполне приличная скорость.
PM MAIL WWW ICQ   Вверх
LSD
Дата 29.9.2005, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(Coocky @ 29.9.2005, 11:36)
Интересно, а если сортировку сделать и сравнить?

Давай. Напиши сишную часть.

Бонифаций
Все в тесте хорошо, кроме одного момента, ты на каждой итерации вызываешь функцию полученя времени. Корректно ли это? Ведь в Java эта функция требует преобразования из системного времени во внутренний формат Java и неизвестно сколько это занимает времени. Попробуй просто сделать фиксированное количество итераций, подбери их чтобы время было порядка 15-30 секунд. И сравнивать уже время выполнения.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Coocky
Дата 29.9.2005, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: нет
Всего: 62



LSD
Цитата(LSD @ 29.9.2005, 16:43)
Давай. Напиши сишную часть

Ок..Какую(сортировку) будем использовать?
Только я не пойму условия-от меня текстовый код, что ли?
Тогда на каком С++ компиляторе будем тестить?

Добавлено @ 16:52

Быстрая сортировка..
Код

void QuickSort(int A[], int L, int R) 

  { 

  int i, j; 

  int x, t; 

  

  while (L < R) 

    { 

    x = A[L]; 

    i = L, j = R; 

    while (i <= j) 

      { 

      while (A[i] < x) i++; 

      while (x < A[j]) j--; 

      if (i <= j) 

        t = A[i], A[i] = A[j], A[j] = t, 

        i++, j--; 

      } 

    if ((j - L) > (R - i)) 

      QuickSort(A, i, R), R = j; 

    else 

      QuickSort(A, L, j), L = i; 

    } 

  } 



выполняет соpтиpовку части массива, огpаниченной

индексами L (слева) и R (спpава);

для соpтиpовки всего массива необходимо сделать вызов

QuickSort(A, 1, n);

глубина pекуpсии <= log n


Это сообщение отредактировал(а) Coocky - 29.9.2005, 17:03


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
LSD
Дата 29.9.2005, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(Coocky @ 29.9.2005, 17:47)
Какую(сортировку) будем использовать?

Без разницы, мы ведь не алгоритмы сравниваем. Главное чтобы код был простым (его ведь еще на Java надо перевести).

Цитата(Coocky @ 29.9.2005, 17:47)
Только я не пойму условия-от меня текстовый код, что ли?

Да. (посмотри примеры выше, как там народ делал)

Цитата(Coocky @ 29.9.2005, 17:47)
Тогда на каком С++ компиляторе будем тестить?

Да на всех GCC, GCJ, VC++, Intel C++ Compiller, у кого что есть


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Бонифаций
Дата 29.9.2005, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 827
Регистрация: 15.9.2005
Где: Brisbane

Репутация: 1
Всего: 40



Цитата(AntonSaburov @ 29.9.2005, 16:40)
Цитата(Guest @ 28.9.2005, )
3968 итераций в секунду.
С оптимизацией, то есть gcj --main=Sieve -O2 Sieve.java, - 8937 итераций в секунду.

Для gcc sieve.c (без оптимизации) 4870 ит/сек
С оптимизацией (gcc -O2 ) - 10503 ит/сек


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

Если делать выводы, то я бы сказал, что
  • Скорость sun java с hotspot находится на уровне С программы, (где-то между неоптимизированной и оптимизированной С программой). Это очень приличная скорость для виртуальной машины. К примеру та же программа на перле показала меньше 1000 ит/сек
  • gcj работает вполне достойно. Чуть быстрее сановской явы (на этом примере). но естественно, имеет достоинство, что для результирующей прграммы не нужен jre.




--------------------
 Бонифаций.
 
PM MAIL ICQ Skype GTalk Jabber YIM   Вверх
Coocky
Дата 30.9.2005, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: нет
Всего: 62



Вот, сравните( у меня JAVA нет), осторожно-много памяти smile
Настройки по умолчанию.. VC 2003

Присоединённый файл ( Кол-во скачиваний: 14 )
Присоединённый файл  C_TEST.rar 4,60 Kb


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
Coocky
Дата 30.9.2005, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: нет
Всего: 62



У кого нет VC, вот исполняемый файл.
Программа сортирует массив из 39999996 случайных элементов в диапазоне 999 до 32766*1000-1
На WinXP ОЗУ256, Celeron 1200MHz-сортировка с настройками компилятора по умолчанию
20.7400 секунд



Код




#include "stdafx.h"
#include <time.h>
#include <stdlib.h>


inline void QuickSort(long* A, long L, long R)


  long i, j; 

  long x, t; 

  

  while (L < R) 

    { 

    x = A[L]; 

    i = L, j = R; 

    while (i <= j) 

      { 

      while (A[i] < x) i++; 

      while (x < A[j]) j--; 

      if (i <= j) 

        t = A[i], A[i] = A[j], A[j] = t, 

        i++, j--; 

      } 

    if ((j - L) > (R - i)) 

      QuickSort(A, i, R), R = j; 

    else 

      QuickSort(A, L, j), L = i; 

    } 

  } 


int _tmain(int argc, _TCHAR* argv[])

{

srand( (unsigned)time( NULL ) );



const long size = 39999996;
    long *pa = new long [size];
    if (pa==0)

    {
         
        return 0;
    }

    for(long i=0;i<size;i++)

    {
        pa[i]=(rand()%32766+1)*1000-(rand()%32766+1);
        
    }



long t1 = clock();

QuickSort(pa,0,39999995);

long t2 = clock();

double duration = (double)(t2 - t1) / CLOCKS_PER_SEC;
   printf( "Sort array %.4f seconds\n", duration );

/*for(long i=0;i<39999996;i++)
  
{
//Для тех ,кто не верит:-)
    printf("\n Ups-s-s-s! %d \n", massiv[i]);


    }
*/
   delete[]pa;

    return 0;
}





Это сообщение отредактировал(а) Coocky - 30.9.2005, 13:00

Присоединённый файл ( Кол-во скачиваний: 8 )
Присоединённый файл  C_TEST.rar 20,98 Kb


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
maxim1000
Дата 30.9.2005, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: нет
Всего: 110



Цитата
Программа сортирует массив из 39999996 случайных элементов в диапазоне 999 до 32766*1000-1

я бы советовал использовать одинаковые массивы для обоих версий
дело в том, что у быстрой сортировки есть не очень приятное свойство:
ее вычислительная сложность зависит от "удачного" выбора разделяющего элемента
если все время не будет везти (крайний случай), ее сложность пропорциональна N^2...


--------------------
qqq
PM WWW   Вверх
Coocky
Дата 30.9.2005, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: нет
Всего: 62



Цитата(maxim1000 @ 30.9.2005, 13:34)
ее вычислительная сложность зависит от "удачного" выбора разделяющего элемента
если все время не будет везти (крайний случай), ее сложность пропорциональна N^2...


Согласен и знал об этом, но как же заполнить? smile


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
maxim1000
Дата 30.9.2005, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: нет
Всего: 110



Цитата
но как же заполнить

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

если же не хочется добавлять сюда операции с диском, можно поступить иначе:
реализуем генератор случайных чисел, инициализируем его одним и тем же числом
запускаем кучу раз - получаем одну и ту же последовательность...
генератор можно взять простейший - типа x=(x*a+b)%m (у нас же не криптография, в конце концов)

конечно, можно было бы использовать встроенные генераторы, но я бы не советовал:
неизвестно, какой из них работает быстрее
даже если известно, то возможно, что он работает быстрее не из-за языка, а из-за пониженных требований к качеству случайных последовательностей (кто его знает, вдруг в Java встроен качественный генератор случайных чисел и это даст неоправданное преимущество для C++?)


--------------------
qqq
PM WWW   Вверх
LSD
Дата 30.9.2005, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Лучше файл smile


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Coocky
Дата 30.9.2005, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: нет
Всего: 62



Ну ладно, пусть сами исправят.. У меня все равно JAva нет, мне пофиг генератор...Не с чем сравнивать smile


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
maxim1000
Дата 30.9.2005, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: нет
Всего: 110



параметры для генератора можно посмотреть в этой теме:
http://forum.vingrad.ru/index.php?showtopic=7465&view=all


--------------------
qqq
PM WWW   Вверх
LSD
Дата 30.9.2005, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(Coocky @ 30.9.2005, 15:16)
Ну ладно, пусть сами исправят..

Ты Сишную часть исправь и перекомпили, а то у меня VS нет.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Coocky
Дата 30.9.2005, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: нет
Всего: 62



Ну кто нить сравнивал? Че молчите?
Или до сих пор прога на Java работает? smile
Добавлено @ 14:22
LSD
А че исправить-то генератор случайных чисел, или в файл записать "родной генератор"?


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
LSD
Дата 30.9.2005, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(Coocky @ 30.9.2005, 15:20)
А че исправить-то генератор случайных чисел, или в файл записать "родной генератор"?

Сделай заполнение массива из файла.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Coocky
Дата 30.9.2005, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: нет
Всего: 62



Цитата(LSD @ 30.9.2005, 15:12)
Сделай заполнение массива из файла.

Давай полное имя файла....который нужно считать..(я ж должен в коде его "открыть")



--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
Coocky
Дата 30.9.2005, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: нет
Всего: 62



LSD
Ну у меня все готово!
имя файла давай!


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
LSD
Дата 30.9.2005, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(Coocky @ 30.9.2005, 16:51)
имя файла давай!

data.bin
А еще лучше пусть как параметр командной строки передается.

Только давай форматы согласуем, сортируем мы знаковые 4-х байтовые целые. В каком формате ты их будешь писать в файл (litle-endian или big-endian)?


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Coocky
Дата 30.9.2005, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: нет
Всего: 62



Значит я сделал вводимый путь, считывает файл ввиде бинарного из 39999996 значений 4 _х байтовых чисел


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
LSD
Дата 30.9.2005, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Порядок байт какой?


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Coocky
Дата 30.9.2005, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: нет
Всего: 62



Вот файл. Положи файл радом с прогой и задай относительный путь.
Думаю считывать будет долго.
Следуй инструкциям на экране smile
Для тех, кто шарит в С++
Код


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

using namespace std;
inline void QuickSort(long* A, long L, long R)


  long i, j; 

  long x, t; 

  

  while (L < R) 

    { 

    x = A[L]; 

    i = L, j = R; 

    while (i <= j) 

      { 

      while (A[i] < x) i++; 

      while (x < A[j]) j--; 

      if (i <= j) 

        t = A[i], A[i] = A[j], A[j] = t, 

        i++, j--; 

      } 

    if ((j - L) > (R - i)) 

      QuickSort(A, i, R), R = j; 

    else 

      QuickSort(A, L, j), L = i; 

    } 

  } 

int _tmain(int argc, _TCHAR* argv[])
{

//srand( (unsigned)time( NULL ) );

printf( "New memory...Please wait..\n" );

const long size = 39999996;
    long *pa = new long [size];
    if (pa==0)
    {
         
        return 0;
    }
   // for(long i=0;i<size;i++)
   // {
     //   pa[i]=(rand()%32766+1)*1000-(rand()%32766+1);
        
   // }
    printf( "New memory is Ok!!!\n" );
    printf( "insert path to file!!!\n" );
    char buf[100];
   cin.getline(&buf[0], 99);

FILE*stream;

if( ( stream= fopen( buf, "r+b" )) != NULL )

   {
     printf( "Please wait! Open your file!!!\n" );
     
       for(long i=0;i<size;i++)
    {
       int numwritten=fread( &pa[i], sizeof( long ), size, stream );
       
    }
      
      fclose( stream );
      printf( "Ok! I'm reading your file!!!\n" );

   }
else
{
printf( "I don't open your file!!!\n" );


}



long t1 = clock();

QuickSort(pa,0,39999995);

long t2 = clock();

double duration = (double)(t2 - t1) / CLOCKS_PER_SEC;
   printf( "Sort array %.4f seconds\n", duration );

/*for(long i=0;i<39999996;i++)
  
{
//Для тех ,кто не верит:-)
    printf("\n Ups-s-s-s! %d \n", massiv[i]);


    }
*/
   delete[]pa;
    return 0;
}




Добавлено @ 16:37
Цитата(LSD @ 30.9.2005, 16:30)
Порядок байт какой?

Не понял..
Считываю в массив, начиная с индекса 0 по 39999995, считываю построчно, вроде smile


Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  C_TEST.rar 39,37 Kb


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
Metal_Heart
Дата 30.9.2005, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а почему бы и нет?
**


Профиль
Группа: Участник
Сообщений: 728
Регистрация: 31.3.2005
Где: Москва

Репутация: 4
Всего: 12



порядок, как будто - старший-младший


--------------------
 не стыдно учиться, а стыдно не учиться 
PM ICQ   Вверх
Бонифаций
Дата 30.9.2005, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 827
Регистрация: 15.9.2005
Где: Brisbane

Репутация: 1
Всего: 40



это конечно, не мое дело, но все же, почему не просто

fread(pa,sizeof(long),size,stream) ?

и если мы читаем в цикле все по очереди случайные значения, почему

int numwritten=fread( &pa[i], sizeof( long ), size, stream );

а не

int numwritten=fread( &pa[i], sizeof( long ), 1, stream );

?

и еще не лучше ли назвать numread а не numwritten? И еще бы какой-нибудь код чтобы сверять его с size, а то он как-то присваивается и нигде не используется.

а вот еще - почему не просто long pa[size] в стеке, а где-то в куче его выделяем, а потом удаляем? Хотя это конечно неважно


--------------------
 Бонифаций.
 
PM MAIL ICQ Skype GTalk Jabber YIM   Вверх
Metal_Heart
Дата 30.9.2005, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а почему бы и нет?
**


Профиль
Группа: Участник
Сообщений: 728
Регистрация: 31.3.2005
Где: Москва

Репутация: 4
Всего: 12



то, что каксаемо работы с файлом - совершенно не важно, так как не в этом суть


--------------------
 не стыдно учиться, а стыдно не учиться 
PM ICQ   Вверх
Coocky
Дата 30.9.2005, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: нет
Всего: 62



Цитата
а вот еще - почему не просто long pa[size] в стеке, а где-то в куче его выделяем, а потом удаляем? Хотя это конечно неважно

У меня больше long pa[99999] вылетает прога в дебаг! smile
Добавлено @ 16:59
Цитата
и еще не лучше ли назвать numread а не numwritten? И еще бы какой-нибудь код чтобы сверять его с size, а то он как-то присваивается и нигде не используется.

Это случайная переменная. Она там ненужна. Это когда тестил-для дебагера использовал
Ребята, кто считает где ошибка-подправтеи выложите снова! Я давно в консоли не писал.Извините...Сишники smile
smile


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
LSD
Дата 1.10.2005, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Программу Coocky на Java я перевел:
Код
import java.io.*;
import java.nio.*;
import java.nio.channels.*;

public class Test
{
  public final static int ARRAY_SIZE = 39999996;
  public final static int ARRAY_SIZE_BYTES = ARRAY_SIZE * 4;

  private static int[] data;

  public static void main(String[] args)
  {
    if(args.length < 1)
    {
      System.out.println("usage: java Test <file_name>");
      System.exit(1);
    }
    
    data = new int[ARRAY_SIZE];
    
    long start = System.currentTimeMillis();
    loadData(args[0]);
    long stop = System.currentTimeMillis();
    
    double duration = ( (double) (stop - start)) / 1000.0;
    
    System.out.printf("Load array %.4f seconds\n", duration);

    start = System.currentTimeMillis();
    quickSort(0, ARRAY_SIZE - 1);
    stop = System.currentTimeMillis();
    
    duration = ( (double) (stop - start)) / 1000.0;
    
    System.out.printf("Sort array %.4f seconds\n", duration);
  }

  private static void loadData(String fileName)
  {
    try
    {
      FileInputStream in = new FileInputStream(fileName);
      FileChannel chanel = in.getChannel();
      if(chanel.size() < ARRAY_SIZE_BYTES)
      {
        System.out.println("File to small");
        chanel.close();
        System.exit(2);
      }
      IntBuffer buffer = chanel.map(FileChannel.MapMode.READ_ONLY, 0, ARRAY_SIZE_BYTES).order(ByteOrder.nativeOrder()).asIntBuffer();
      buffer.get(data);
      chanel.close();
      in.close();
      buffer = null;
      chanel = null;
      in = null;
    }
    catch(IOException ex)
    {
      System.out.println("Error reading file: " + ex);
      System.exit(2);
    }
    
    System.gc();
    System.gc();
    System.gc();
  }

  private static void quickSort(int L, int R)
  {
    int i, j;
    int x, t;

    while(L < R)
    {
      x = data[L];
      i = L;
      j = R;
      while(i <= j)
      {
        while(data[i] < x)
          i++;

        while(x < data[j])
          j--;

        if(i <= j)
        {
          t = data[i];
          data[i] = data[j];
          data[j] = t;

          i++;
          j--;
        }
      }

      if( (j - L) > (R - i) )
      {
        quickSort(i, R);
        R = j;
      }
      else
      {
        quickSort(L, j);
        L = i;
      }
    }
  }
}


А вот генератор тестовых данных:
Код
import java.security.SecureRandom;
import java.io.FileOutputStream;
import java.io.*;

public class TestDataGenerator
{
  private final static int BUFFER_SIZE = 8 * 1024;

  public static void main(String[] args)
  {
    if(args.length < 1)
    {
      System.out.println("usage: java Test <file_name>");
      System.exit(1);
    }
    
    SecureRandom rnd = new SecureRandom();
    
    byte[] buffer = new byte[BUFFER_SIZE];
    int leftToWrite = Test.ARRAY_SIZE_BYTES;
    try
    {
      FileOutputStream out = new FileOutputStream(args[0]);
      while(leftToWrite > 0)
      {
        rnd.nextBytes(buffer);
        out.write(buffer, 0, Math.min(leftToWrite, BUFFER_SIZE));
        leftToWrite -= BUFFER_SIZE;
      }
      out.close();
    }
    catch(IOException ex)
    {
      System.out.println("Error writeng file: " + ex);
      System.exit(2);
    }
  }
}


Теперь о тестах. Первый раунд Java выиграла нокаутом на первой секунде матча smile
Coocky ты чего там намудрил с загрузкой из файла? Запускаю программу и она у меня на этапе загрузки данных Please wait! Open your file!!! висит 5 минут, загрузка ядра по диспетчеру задач 100%?

З.Ы. Java загружает данные за 0,9690 секунды smile


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Coocky
Дата 4.10.2005, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: нет
Всего: 62



Цитата(LSD @ 1.10.2005, 22:32)
Java загружает данные за 0,9690 секунды

Интересно, а какой у тебя размер файла, в котором записано 39999996 элементов по 4 байта? smile



--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
Бонифаций
Дата 4.10.2005, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 827
Регистрация: 15.9.2005
Где: Brisbane

Репутация: 1
Всего: 40



примерно 156 мегабайт


--------------------
 Бонифаций.
 
PM MAIL ICQ Skype GTalk Jabber YIM   Вверх
LSD
Дата 4.10.2005, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(Coocky @ 4.10.2005, 16:56)
Интересно, а какой у тебя размер файла, в котором записано 39999996 элементов по 4 байта?

Если верить Windows: размер 159 999 984 bytes, на диске 160 002 048 bytes smile

Это время конечно не после первого запуска, данные сидят в кеше (столько данных, за такое время, диск не в состоянии прочитать). Но попробую сделать это после перезагрузки.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Бонифаций
Дата 4.10.2005, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 827
Регистрация: 15.9.2005
Где: Brisbane

Репутация: 1
Всего: 40



я пробовал. Вот два запуска. первый после перемонтирования раздела (т.е. без кэша), второй соответсвенно уже с кешем

bash-2.05b$ /opt/java/bin/java -Xmx200m Test DT
We are here:
Load array 4.197 seconds

Sort array 13.562 seconds

bash-2.05b$ /opt/java/bin/java -Xmx200m Test DT
We are here:
Load array 0.646 seconds

Sort array 13.976 seconds

А вот что показала сишная программа (слегка модифицированная чтобы загрузка нормально работала)

./testcc DT
New memory...Please wait..
Please wait! Open your file!!!
Ok! I've eaten it!!!!!11
Sort array 9.43 seconds



--------------------
 Бонифаций.
 
PM MAIL ICQ Skype GTalk Jabber YIM   Вверх
LSD
Дата 4.10.2005, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Бонифаций
Попробуй запустить JVM как серверную (-server).


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Бонифаций
Дата 4.10.2005, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 827
Регистрация: 15.9.2005
Где: Brisbane

Репутация: 1
Всего: 40



bash-2.05b$ /opt/java/bin/java -Xmx200m -server Test DT
We are here:
Load array 4.559 seconds

Sort array 12.015 seconds

bash-2.05b$ /opt/java/bin/java -Xmx200m -server Test DT
We are here:
Load array 0.657 seconds

Sort array 12.277 seconds




--------------------
 Бонифаций.
 
PM MAIL ICQ Skype GTalk Jabber YIM   Вверх
Бонифаций
Дата 5.10.2005, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 827
Регистрация: 15.9.2005
Где: Brisbane

Репутация: 1
Всего: 40



Цитата(LSD @ 1.10.2005, 22:32)
Программу Coocky на Java я перевел:
....
З.Ы. Java загружает данные за 0,9690 секунды smile

Я переделал С++ программу так, как мне кажется правильным. (приаттачено) Скажу сразу, я юниксовый житель и писал (и пробовал) под юниксы. Windows ветку я написал " исходя из здравого смысла и общей эрудиции", но не пробовал. У кого есть желание - welcome.



Присоединённый файл ( Кол-во скачиваний: 9 )
Присоединённый файл  jtest.zip 3,08 Kb


--------------------
 Бонифаций.
 
PM MAIL ICQ Skype GTalk Jabber YIM   Вверх
Дельф
Дата 24.11.2005, 21:09 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











http://weblogs.java.net/blog/opinali/archi...s_hotspo_1.html

Давайте по этому поводу прогоним тесты по новой. Выложите кто-нибудь .classы на www.ultrashare.net
  Вверх
mndkr
Дата 24.12.2005, 00:29 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Уважаемые защитники Java, вы же понимаете, что претензии к Java-приложениям заключаются не столько в скорости вычислений, сколько в работе графического интерфейса пользователя. Работа Java-приложений с rich GUI на маломощных машинах ощутимо медленнее, чем работа приложений, откомпилированных в native код под конкретную ОС. (Эта пресловутая JIT-compilation тут не сильно, видимо, помогает). Тормозной интерфейс сильно портит впечатление от Java-программ. На ваших Р4 это, может быть, и незаметно, а в будущем эта проблема в связи с ростом производительности процессоров вообще исчезнет, но сейчас далеко не у каждого стоит проц с частотой в 3 ГГц.
  Вверх
Domestic Cat
Дата 24.12.2005, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Цитата(mndkr @ 23.12.2005, 15:29)
На ваших Р4 это, может быть, и незаметно, а в будущем эта проблема в связи с ростом производительности процессоров вообще исчезнет, но сейчас далеко не у каждого стоит проц с частотой в 3 ГГц.

Тогда приводи конкретные данные - на какой машине что и как тормозит. Потому что с P2 Java программы с гуем довольно трудно отличить от нативных.


--------------------

PM   Вверх
Zandr
Дата 27.12.2005, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 433
Регистрация: 16.7.2004
Где: Новосибирск

Репутация: 9
Всего: 13



Domestic Cat, согласен
PM MAIL   Вверх
хочу работать с Java
Дата 12.1.2006, 23:50 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Господа, хотелось бы услышать мнения о работе в Java с плавающей точкой. На рсдн, в тестах, приводятся просто потрясающие результаты Java по этому направлению - Java ставят в один ряд с VB. Неужели всё так плохо?
  Вверх
LSD
Дата 13.1.2006, 00:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(хочу работать с Java @ 12.1.2006, 23:50 Найти цитируемый пост)

Господа, хотелось бы услышать мнения о работе в Java с плавающей точкой. На рсдн, в тестах, приводятся просто потрясающие результаты Java по этому направлению - Java ставят в один ряд с VB. Неужели всё так плохо?

Ха! А что ты хотел от этого оплота Майкрософта smile

Накидай пару тестиков и сравни, вопрос только с чем? С C++, C#, VB.NET или что еще?
Java код написать не проблема.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
jer1
Дата 16.1.2006, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 123
Регистрация: 24.1.2005
Где: Харьков Украина

Репутация: 4
Всего: 5



взял программу Коть и запустил у себя
Вот программы которые я использовал:
Код
#include <stdio.h>
#include <time.h>

const int N = 1000000;

unsigned int f;
unsigned int factorial (unsigned int a);
main()
{   
    clock_t t1 = clock();
    int i;
    for (i = 0; i < N; i++)
    {
        f = factorial(100);
    }
    clock_t t2 = clock();
    printf("\n Program execution time is %u milliseconds \n", (t2 - t1) * 10);

unsigned int factorial(unsigned int a)
{
    if (a == 1) return 1;
    else 
    {
        a *= factorial(a - 1);
        return a;
    }
}

Код

public class JavaSpeedTest {
    public static final int COMPUTE_COUNT = 1000000;

    public static void main(String [] args)
    {
        long t1 = System.currentTimeMillis();
        int f = 0;
        for (int i = 0; i < COMPUTE_COUNT; i++)
        {
            f = factorial(100);
        }

        System.out.println("\n Program execution time is " + (System.currentTimeMillis() - t1) + 
                                      "   milliseconds");    
    }

    public static int factorial(int a) 
    {
    if (a == 1) return 1;
        else 
        {
            a *= factorial(a - 1);
            return a;
        }
    }
}

Код

program DelphiSpeedTest; //Delphi 5.62
{$APPTYPE CONSOLE}
uses
  SysUtils;

const
    COMPUTE_COUNT: integer = 1000000;

    function factorial(a: integer): integer; begin
        if (a = 1) then factorial := 1
        else begin
            a := a * factorial(a - 1);
            factorial := a;
        end;
    end;

var
   i: integer;
   time0, time1 : TDateTime;
   Year, Month, Day, Hour, Min, Sec, MSec: Word;
   f: integer;
begin
   time0 := now;
   for i := 0 to COMPUTE_COUNT do f := factorial(100);
   time1 := now;
   DecodeTime(time1 - time0, Hour, Min, Sec, MSec);
   write('Program execution time is ');
   write(intToStr(1000*sec+mSec)); write(' in miliseconds');
end.

компьютер Celeron 1.2 256M os: XP Professional, Linux Slackware ядро 2.4.26
jdk:
java version "1.5.0_04"
Java™ 2 Runtime Environment, Standard Edition (build 1.5.0_04-b05)
Java HotSpot™ Client VM (build 1.5.0_04-b05, mixed mode, sharing)

результаты в миллисекундах (три запуска):
delphi 5: 1141; 1140; 1156
java XP: 1187; 1203; 1187
java linux: 1201; 1189; 1203
java linux server: 685; 696; 705
c (gcc -o test2 CSpeedTest.c ): 19000000; 19000000; 19100000
c(gcc -O3 -o test CSpeedTest.c): 10800000; 11000000; 10800000
gcj (gcj -c -g -O JavaSpeedTest.java; gcj --main=JavaSpeedTest -o GCJSpeedTest JavaSpeedTest.o ): 2815; 2826; 2828
--------------------
:w!q
PM MAIL   Вверх
Бонифаций
Дата 25.1.2006, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 827
Регистрация: 15.9.2005
Где: Brisbane

Репутация: 1
Всего: 40



Другими словами С получился в тысячи раз медленнее? smile не верю. При всем уважении к java.


--------------------
 Бонифаций.
 
PM MAIL ICQ Skype GTalk Jabber YIM   Вверх
erka
Дата 25.1.2006, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 13.7.2005

Репутация: нет
Всего: 1



как по мне, clock() не миллисекунды выводит

Смотрим например сюда - http://www.phim.unibe.ch/comp_doc/c_manual/C/MAN/clock.htm

The value returned is the CPU time used so far as a clock_t; to get the number of seconds used, divide by CLOCKS_PER_SEC.
PM MAIL   Вверх
beartamer
Дата 20.3.2006, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 20.3.2006

Репутация: нет
Всего: 1



Здравствуйте

Я только начал знакомиться с Java и у меня сразу возник вопрос относительно производительности типичных приложений (допустим Swing), связанный с расходом памяти.

Как я понимаю, для каждого процесса создается экземпляр виртуальной машины и память вместе с процессом-приложением и всеми используемыми библиотеками занимает и jvm. Даже 10 совершенно одинаковых GUI приложений занимают в памяти примерно столько, сколько одно приложение * 10, словно никакого совместного использования библиотек и быть не может.

Это нормально? Может быть я что-то делаю не так? Простейший Sample Swing App из поставки с NetBeans 5.0, будучи запущен в 10 экземплярах, занимает всю мою свободную память на рабочей станции... Трудно себе представить что на рабочей станции будет работать более 5 даже простейших приложений Java - каждое займет по 15-25 мб.

Как-то это отталкивает, что ли.. Скажите как справиться? Срочно требуется идеологическая поддержка smile

P.S. я тут первый раз заглянул, надеюсь никаких традиций древних постом не нарушу

Это сообщение отредактировал(а) beartamer - 20.3.2006, 16:19
PM MAIL   Вверх
batigoal
Дата 20.3.2006, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 24
Всего: 151



Цитата(beartamer @ 20.3.2006, 17:18 Найти цитируемый пост)
Это нормально? Может быть я что-то делаю не так?

Да, это нормально. Ведь запуском java ... порождается новый процесс, и так для каждого приложения. Если не ошибаюсь, есть возможность запустить несколько десктопных приложений и под одной виртуальной машиной, но как это сделать - не знаю.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Nobody
Дата 21.3.2006, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 25.8.2003
Где: Россия, Москва

Репутация: 4
Всего: 16



Lamer George, Написать свой запускатор, который будет жить в явамашине и дёргать main-методы? smile


--------------------
Алгоритм помещения вопросов на форуме
Выражаем спасибо вот ТАК
Use the Source, Luke!
PM MAIL WWW ICQ   Вверх
batigoal
Дата 21.3.2006, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 24
Всего: 151



Цитата(Nobody @ 21.3.2006, 15:34 Найти цитируемый пост)
Написать свой запускатор, который будет жить в явамашине и дёргать main-методы? smile

А Бог его знает, почему бы и нет. smile

Кстати, вот только что наткнулся в мануале Анта на опцию fork таска java. Она как раз отвечает за запуск приложения в рамках той же JVM, что и Ant, или во внешней. По умолчанию - в одной.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
beartamer
Дата 21.3.2006, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 20.3.2006

Репутация: нет
Всего: 1



Так всё таки насколько это просто и естественно - запустить пару-тройку приложений разделяющих виртуальную машину и библиотеки классов? А то получается что писать простые пользовательские приложения на Java просто смысла нет - памяти не напасешься...
smile

PM MAIL   Вверх
kkorsakoff
Дата 21.3.2006, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.10.2005
Где: Санкт-Петербург

Репутация: 3
Всего: 14



Блин был какой-то продукт. Не могу вспомнить название. Суть в том, что он стартовал при запуске системы. При запуске java-приложения не создается новая виртуальная машина, а оно запускается внутри той единственной. Получаем большой выигрыш в скорости загрузки. Постараюсь вспомнить.
PM MAIL WWW ICQ   Вверх
batigoal
Дата 21.3.2006, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 24
Всего: 151



Цитата(beartamer @ 21.3.2006, 16:40 Найти цитируемый пост)
А то получается что писать простые пользовательские приложения на Java просто смысла нет - памяти не напасешься...

В общем-то, так и есть, если нет необходимости в кросс-платформенности.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
SaDFromSpb
Дата 2.6.2006, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 5.4.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 3



Я в этом треде вычитал такую мысль, что sun'овская ява считается клиентской (потому что не достаточно сбоеустойчивая). Позвольте, господа, а чья же ява считается серверной тогда?

По поводу производительности джаги и си - тут мелькала уже разумная мысль, что в больших проектах критичным становится объем занимаемой памяти. Достаточно ли хорошо и быстро работает автоматический сборщик мусора?
К тому же джага больно жадная до памяти по мелочи. Вроде (хотя надо бы, конечно, проверить) аналоги сишных строк, контейнеров и т.д, на яве занимают больше памяти (хотя бы потому что у них иерархия аж от Object'a у всех).
Затем, при работе со всевозможными очень удобными классами в яве бывают накладные расходы по количеству операций (например объекты класса String во многих местах неявно копируются).
Графический интерфейс в яве очевидно медленнее, чем написанный на "нативном языке" (не надо меня убеждать в обратном, я уж насиделся в IntlliJ IDEA на втором пне).
В общем, я хочу сказать, что реальные работающие приложения не числа фибоначи считают. И интереснее посмотреть на результаты более приближенных к жизни тестов.

ЗЫ: Я против явы ничего против не имею. Ява - это такой "программистский рай", без отслеживания кусков не нужной более памяти и с огромной кучей готового и удобного (Особенно мне понравилось, как здорово в ней воплотили многие паттерны проектирования в графическом интерфейсе).  

Это сообщение отредактировал(а) SaDFromSpb - 2.6.2006, 18:32


--------------------
"За исключением части, касающейся потоков, библиотека Loki написана на стандартном языке С++. Увы, это означает, что многие современные компиляторы не смогут работать с ней в полном объеме." (А. Александреску. Modern C++ design. 2001)
PM   Вверх
batigoal
Дата 2.6.2006, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 24
Всего: 151



Что касается тех проектов, в которых участвовал я - Java-приложения вообще не становились узким местом системы. Как правило, нагрузка ложилась на базу (немалая часть логики находится в ней), и на сеть. А скорость выполнения ява-кода в оптимизации не нуждалась. Впрочем, я уверен, что существуют проекты, для которых именно этот пункт становится камнем преткновения. 


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
LSD
Дата 3.6.2006, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(SaDFromSpb @  2.6.2006,  19:27 Найти цитируемый пост)
Я в этом треде вычитал такую мысль, что sun'овская ява считается клиентской (потому что не достаточно сбоеустойчивая). Позвольте, господа, а чья же ява считается серверной тогда?

Ну во первых такую мысль культивируют ребята из BEA, противопоставля ей свою JRockit. По чистой производительности в вычислительных тестах, она проиграла Sun-овской JVM, а гонять стресс тесты длительностью в недели у меня нет возможности.
Во вторых есть действительно специфичные JVM, например Aurora от Oracle, там специфика в тесной интеграции с сервером. 


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
powerOn
Дата 14.7.2006, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 47
Всего: 159



Хм... стало жутко интересно, и я накатал тестик, смысл которого скорость создания объекта + вызов метода. 
Код С++ писал под Windows, с использованием MS Visual Studio 6.0 (поскольку другой не имею). На идеальность тест не претендует, поправьте меня если что нет так.

С++:
Код

#include <stdio.h>
#include <conio.h>
#include <windows.h>

class A {
public:
    double calculate(double p1, double p2) {
        return (p1 / p2)/(p1+p2);
    }
};

int main() {
    printf("start...\n");
    long t1 = GetTickCount();
    double res = 0;
    for(int i = 0; i < 10000000; i++) {
        A *a = new A();
        res +=  (a->calculate(i+1, 11));
        delete a;
    }
    long t2 = GetTickCount() - t1;
    printf("res = %f, time = %i \n", res, t2);
    getch();
    return 0;
}


Java: 
Код

public class NewClass {

    public NewClass() {
    }
    public static void main(String[] args) {
        System.out.println("start...");
        double res = 0;
        long t1 = System.currentTimeMillis();
    for(int i = 0; i < 10000000; i++) {
        res += (new A().calculate(i + 1, 11));
    }
        long t2 = System.currentTimeMillis() - t1;
        System.out.println("res = " + res + " time = " + t2);
    }
}

class A {
    public double calculate(double p1, double p2) {
        return (p1 / p2)/(p1+p2);
    }
}


С++: MSVS 6.0 (в настройках оптимизация поставлена на скорость)
Java: 1.5.0_07-b03 (client/server)

Время выполнения (миллисекунды): 
C++ (release) ~ 1297   
Java (client)    ~   422
Java (server)  ~   203


ОС Windows XP Professional sp2
Комп: AMD Athlon 64 X2 4200+ (2.2 гГц) RAM 2 GB

Так что можно сделать выводы, что Java местами даже побыстрее C++ будет  smile . 


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
Void
Дата 14.7.2006, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 1
Всего: 173



MoonCat, то что при частом создании маленьких объектов GC рулит по сравнению с кучей, было известно давно smile 


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Alexandr87
Дата 14.7.2006, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


дыкий псых
***


Профиль
Группа: Завсегдатай
Сообщений: 1459
Регистрация: 27.11.2004
Где: Алматы, Казахстан

Репутация: 9
Всего: 39



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

    for(int i = 0; i < 10000000; i++) {
        res += (new A().calculate(i + 1, 11));
    }


и просто его выводит, или каким-то подобным макаром. Предлагаю сделать значение 11 случайным и посмотреть, что получиться, в сравнении с с++. 
PM Jabber   Вверх
powerOn
Дата 14.7.2006, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 47
Всего: 159



Цитата(Void @  14.7.2006,  20:42 Найти цитируемый пост)
MoonCat, то что при частом создании маленьких объектов GC рулит по сравнению с кучей, было известно давно smile 

Да я, вообще, еще тот любилеть Америки открывать.  smile 

Цитата(Alexandr87 @  14.7.2006,  20:44 Найти цитируемый пост)
Предлагаю сделать значение 11 случайным и посмотреть, что получиться, в сравнении с с++.  

Хорошо..., правим код:

Java
Код

public class NewClass {
    
    /** Creates a new instance of NewClass */
    public NewClass() {
    }
    public static void main(String[] args) {
        System.out.println("start...");
        double res = 0;
        Random rand = new Random();
        long t1 = System.currentTimeMillis();
    for(int i = 0; i < 10000000; i++) {
        res += (new A().calculate(i + 1, rand.nextFloat() * 100 ));
    }
        long t2 = System.currentTimeMillis() - t1;
        System.out.println("res = " + res + " time = " + t2);
    }
}

class A {
    public double calculate(double p1, double p2) {
        return (p1 / p2)/(p1+p2);
    }
}


C++:
Код

#include <stdio.h>
#include <conio.h>
#include <windows.h>

class A {
public:
    double calculate(double p1, double p2) {
        return (p1 / p2)/(p1+p2);
    }
};

int main() {
    printf("start...\n");
    long t1 = GetTickCount();
    double res = 0;

    for(int i = 0; i < 10000000; i++) {
        A *a = new A();
        res +=  a->calculate(i+1, ((double) rand()/ (double) RAND_MAX) * 100);
        delete a;
    }
    long t2 = GetTickCount() - t1;
    printf("res = %f, time = %i \n", res, t2);
    getch();
    return 0;
}


Время выполнения (миллисекунды): 
C++ (release) ~ 1453   
Java (client)    ~   937
Java (server)  ~   531

Может я в коде где ошибся? Но Java все равно быстрее... 

 


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
JUncle
Дата 17.7.2006, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 6.4.2006
Где: Казань, РФ

Репутация: нет
Всего: 1



Цитата(SaDFromSpb @  2.6.2006,  18:27 Найти цитируемый пост)
Графический интерфейс в яве очевидно медленнее, чем написанный на "нативном языке" (не надо меня убеждать в обратном, я уж насиделся в IntlliJ IDEA на втором пне).

Есть разумный компромисс - Eclipse SWT. Нативные графические библиотеки.  Собственно, GUI Eclipse на нем сделан.
В Java 6.0 Mustang обещали увеличить производительность GUI до уровня нативных приложений без всяких копромиссов в стиле SWT.

Цитата(SaDFromSpb @  2.6.2006,  18:27 Найти цитируемый пост)
К тому же джага больно жадная до памяти по мелочи. Вроде (хотя надо бы, конечно, проверить) аналоги сишных строк, контейнеров и т.д, на яве занимают больше памяти (хотя бы потому что у них иерархия аж от Object'a у всех).
Затем, при работе со всевозможными очень удобными классами в яве бывают накладные расходы по количеству операций (например объекты класса String во многих местах неявно копируются).


Цитата(SaDFromSpb @  2.6.2006,  18:27 Найти цитируемый пост)
ЗЫ: Я против явы ничего против не имею. Ява - это такой "программистский рай", без отслеживания кусков не нужной более памяти и с огромной кучей готового и удобного (Особенно мне понравилось, как здорово в ней воплотили многие паттерны проектирования в графическом интерфейсе).  

Ну раз против не имеете, и такие разумные доводы за приводите, что же жалуемся? 
Это как в пилотировании самолета - размен скорости на высоту (C - > Java) либо наоборот.
Ничего из ничего не получается. И ничто никуда не пропадает.

Цитата(MoonCat @  14.7.2006,  20:50 Найти цитируемый пост)
Может я в коде где ошибся? Но Java все равно быстрее... 

Вряд ли ошиблись. Все дело в технологии HotSpot. "Узкие места" компилируются в машинный код и оптимизируются по адаптивному алгоритму, включая оптимизацию под конкретно ВАШУ архитектуру процессора (note: если он известен на момент выхода JDK).
(А под какие процессоры может оптимизировать VS 6.0? - ритор. вопрос).
Так что ничего удивительного тут нет.
Кстати, попробуйте еще на VS 7.0 прогнать.  

Это сообщение отредактировал(а) JUncle - 17.7.2006, 20:22
--------------------
class JUncle extends Man // singleton{/*...*/}
PM MAIL   Вверх
Void
Дата 17.7.2006, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 1
Всего: 173



Цитата(JUncle @  17.7.2006,  22:19 Найти цитируемый пост)
Вряд ли ошиблись. Все дело в технологии HotSpot.

HotSpot, JIT и прочие радости управляемых сред здесь не при чем. Единственное узкое место в C++ коде здесь — это создание и удаление объекта. В Java это буквально пара инструкций, в C++ — проход по chunck'ам кучи.
В этом легко убедиться, заменив calculate в варианте на Java на статический метод, а в C++ — на свободную функцию. В этом случае VC 7.1 примерно равен Java, а Intel C++ 9.0 обгоняет процентов на 15–20.

Добавлено @ 23:57 
Цитата(JUncle @  17.7.2006,  22:19 Найти цитируемый пост)
Это как в пилотировании самолета - размен скорости на высоту (C - > Java) либо наоборот.

Странно, чего это межконтинентальные лайнеры забираются в стратосферу, а кукурзники летают в пределах 3–4 тыс. м smile 


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
JUncle
Дата 18.7.2006, 07:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 6.4.2006
Где: Казань, РФ

Репутация: нет
Всего: 1



Цитата(Void @  17.7.2006,  23:54 Найти цитируемый пост)
Странно, чего это межконтинентальные лайнеры забираются в стратосферу, а кукурзники летают в пределах 3–4 тыс. м smile  

Не хочу оффтопить, но это утверждение верно при пилотировании одного конкретного самолета.  smile
Это размен кинетической энергии на потенциальную и наоборот. На этом весь пилотаж и основан, в принципе.
 
--------------------
class JUncle extends Man // singleton{/*...*/}
PM MAIL   Вверх
$tatic
Дата 16.11.2006, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 28.1.2005

Репутация: нет
Всего: 22



Прогнал тест powerOn (без ГСЧ) на Sun Java 1.5.0_06-b05, VC++ 8.0 и .NET 2.0:
Код

using System;
using System.Diagnostics;

namespace SpeedSharp
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Start...");
            double res = 0;
            Stopwatch sw = new Stopwatch();
            sw.Start();
            for (int i = 0; i < 10000000; i++)
            {
                res += (new A().calculate(i + 1, 11));
            }
            sw.Stop();
            Console.WriteLine("res = {0} time = {1}", res, sw.ElapsedMilliseconds);
        }
    }

    class A
    {
        public double calculate(double p1, double p2)
        {
            return (p1 / p2) / (p1 + p2);
        }
    }
}


Результаты:
Java client ~ 800
Java server ~ 471
.NET (release) ~ 735
VC++ (release) ~ 3555

AMD Duron 1300 MHz, 512 Mb DDRAM, WinXP SP2.
У плюсов результат действительно такой - приложение работает ощутимо дольше, чем на остальных платформах.

Такой вопрос - почему существуют отдельно клиент и сервер для джавы? Или возможности серверной версии недостаточны для настольных приложений? Почему Sun не сделала универсальную версию на основе серверной?
PM MAIL   Вверх
LSD
Дата 16.11.2006, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата($tatic @  16.11.2006,  12:00 Найти цитируемый пост)
Такой вопрос - почему существуют отдельно клиент и сервер для джавы? Или возможности серверной версии недостаточны для настольных приложений? Почему Sun не сделала универсальную версию на основе серверной?

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


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
unkis
Дата 3.12.2006, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 802
Регистрация: 8.9.2004

Репутация: нет
Всего: 1



а говорят что java 6 будет только серверной?
Правда ли это?


--------------------
www.unkis.com
PM MAIL WWW   Вверх
powerOn
Дата 3.12.2006, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 47
Всего: 159



Цитата(unkis @  3.12.2006,  15:25 Найти цитируемый пост)
а говорят что java 6 будет только серверной?
Правда ли это? 

Нет.

Цитата

C:\Documents and Settings\root>java -version
java version "1.6.0-rc"
Java™ SE Runtime Environment (build 1.6.0-rc-b104)
Java HotSpot™ Client VM (build 1.6.0-rc-b104, mixed mode, sharing)

C:\Documents and Settings\root>java
Usage: java [-options] class [args...]
           (to execute a class)
   or  java [-options] -jar jarfile [args...]
           (to execute a jar file)

where options include:
    -client       to select the "client" VM
    -server       to select the "server" VM
    -hotspot      is a synonym for the "client" VM  [deprecated]

                  The default VM is client.

 smile 



--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
unkis
Дата 3.12.2006, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 802
Регистрация: 8.9.2004

Репутация: нет
Всего: 1



Спасибо теперь все ясно.
 smile 
Извиняюсь за оффтоп.

но питаюсь запустить в серверном режиме мою программу а мне тут вот такую ошибку.

Код

C:\>java -server -jar screenClientApplet_1.jar
Error: no `server' JVM at `C:\Java\jre1.6.0\bin\server\jvm.dll'.
  

Проверил действительно такой папки с файлом там нет. Хотя установил JDK 1.6 RC.

Что же тогда устанавливать надо чтобы оно заработало в серверном режиме?


--------------------
www.unkis.com
PM MAIL WWW   Вверх
powerOn
Дата 3.12.2006, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 47
Всего: 159



Цитата(unkis @  3.12.2006,  15:55 Найти цитируемый пост)
Хотя установил JDK 1.6 RC.

Ты запуск делаешь на JRE-шной JVM. Запускай именно на JDK-шной java.exe.


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
cerf_machine
Дата 16.2.2007, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 12.2.2007
Где: тебя носило?

Репутация: нет
Всего: 1



А в чем заключается принцип игры жизнь, про которую был разговор в начале?
PM MAIL ICQ   Вверх
batigoal
Дата 16.2.2007, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 24
Всего: 151



cerf_machine, посмотри пример: http://life.june.com.ua/


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
cerf_machine
Дата 16.2.2007, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 12.2.2007
Где: тебя носило?

Репутация: нет
Всего: 1



О, забавно.
Меня совсем недавно друг просил это сделать. Он вычитал из какой-то фантастической книги. Я делал на c++, используя WinAPI, но приоритетная роль была отведена именно узору, который проявлялся в жизненном цикле организмов - пикселей серого цвета на черном фоне.
Если интересно, могу показать.

Это сообщение отредактировал(а) cerf_machine - 16.2.2007, 16:58
PM MAIL ICQ   Вверх
VOS
Дата 9.3.2007, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 31.1.2007

Репутация: нет
Всего: 8



Прикольно все написано, только непонятно откуда такие цифры.

Тест с факториалами пробовал на довольно тормозном в мире C++ компиляторе Borland CBuilder
Код

unsigned  int factorial(unsigned int a)
{
   if (a == 1) return 1;
   else
   {
       a *= factorial(a - 1);
       return a;
   }
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
 unsigned int N = 1000000;
 unsigned int f;

  double d=GetTickCount();
   for (int i = 0; i < N; i++)
   {
       f = factorial(100);
   }
   double d1=(GetTickCount()-d)/1000;
   ShowMessage(d1);

}


У меня получилось 1,079 сек
Если всего лишь объявить вместо unsigned  int factorial(unsigned int a)
unsigned int __fastcall factorial(unsigned int a)
получилось уже 0,857 сек

Тест по созданию большого числа небольших объектов однозначно нечестный для С++. 
Потому что в С++ вы замеряете не только создание, но и удаление объектов (там есть delete a). 
А это минимум в 2 раза увеличивает время. 
PM MAIL   Вверх
devmstr
Дата 9.3.2007, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Developer
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 28.4.2004
Где: Ukraine

Репутация: нет
Всего: 11



Цитата(VOS @  9.3.2007,  17:01 Найти цитируемый пост)
но и удаление объектов (там есть delete a).

А что Вы считаете что JVM объекты вообще не удаляет? У неё что безграничное пространство для действий без ограничений?


--------------------
Think different ©Steve Jobs 
user posted image
PM MAIL WWW   Вверх
VOS
Дата 9.3.2007, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 31.1.2007

Репутация: нет
Всего: 8



Я подозреваю, что объекты будут когда-нибудь удалены. Ключевой момент когда. Но очень сомневаюсь, что это происходит в момент замера теста. Я буду Вам благодарен, если Вы расскажите мне в какой момент происходит реальное удаление объектов в Java и как я могу это контролировать.  Замечу также, что показанный здесь способ создания объектов является самым медленным в С++. Обычно, когда Вам нужны часто создаваемые/уничтожаемые небольшие объекты их создают с помощью конструкции 

А a(i);
a.calculate(...);

В этом случае скорость вырастет на порядки, т.к. чтобы создать/уничтожить объект достаточно передвинуть указатель по стеку и все.
Понимаете, даже если поверить, что JIT компилятор неимоверно крут в Java или там в .Net, есть 
еще некоторые особенности этих языков.
Например массивы. И Java и там C# при каждом обращении к какому-нибудь элементу по любому будут проверять на допустимые границы и т.д. 
Я ни в коем случае не говорю, что это плохо в общем смысле. Но это не добавляет производительности в частности. Но именно из-за общего смысла, для мобил я пишу на Java smile И надо отдать должное, мне все больше нравится с Java работать. 
PM MAIL   Вверх
batigoal
Дата 10.3.2007, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 24
Всего: 151



Цитата(VOS @  9.3.2007,  23:58 Найти цитируемый пост)
Я буду Вам благодарен, если Вы расскажите мне в какой момент происходит реальное удаление объектов в Java и как я могу это контролировать.

Благодарности мы не дождёмся - это процесс непредсказуемый smile


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
maxim1000
Дата 10.3.2007, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: нет
Всего: 110



Зато можно с увереностью отодвинуть процесс удаления smile
можно изменить тест так:
в C++ только создавать объекты
в Java создавать объекты и использовать их потом (чтобы сборщик мусора не удалил их сразу)
и замерить только время создания в обеих программах...

Добавлено @ 12:05 
а вот время удаления, скорее всего и не получится сравнить из-за этой самой непредсказуемости (хотя яслышал, что можно принудительно вызывать сборщик, но ведь он может начать собирать и другие какие-то вещи)

Это сообщение отредактировал(а) maxim1000 - 10.3.2007, 12:06


--------------------
qqq
PM WWW   Вверх
batigoal
Дата 10.3.2007, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 24
Всего: 151



Цитата(maxim1000 @  10.3.2007,  13:03 Найти цитируемый пост)
хотя яслышал, что можно принудительно вызывать сборщик, но ведь он может начать собирать и другие какие-то вещи

Можно попробовать, но без гарантий, что он действительно вызовется.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
VOS
Дата 10.3.2007, 14:49 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 31.1.2007

Репутация: нет
Всего: 8



Еще несколько слов по поводу тестов. Мне кажется сам подход, который пытаются здесь применить - неверен. Вы сначала пишете тест на Java, а потом просто копируете его как код C++.
Не выполнив даже элементарные "косметические" действия как в примере с __fastcall 
Это в корне неверный подход. Хотите получить реальные тесты по производительности, пригласите специалиста в C++. Поставьте ему задачу и пусть он ее сделает любыми доступными ему средствами в C++, а Вы выполните ее любыми доступными средствами в Java. Естественно исходники должны быть открыты и доступны всем участникам. Возможно даже Вы сможете заинтересовать смежный форум по С++ и получится даже некое межфорумное соревнование  smile Ну и конечно, например 5-10 тестов должны быть от форумчан С++ и 5-10 от поклонников Java. 

Итогом могут получиться уже заслуживающие внимания результаты, которые пригодятся в реальной жизни при выборе средства разработки для той или иной задачи.

PM MAIL   Вверх
LSD
Дата 10.3.2007, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(VOS @  10.3.2007,  14:49 Найти цитируемый пост)
Это в корне неверный подход. Хотите получить реальные тесты по производительности, пригласите специалиста в C++. Поставьте ему задачу и пусть он ее сделает любыми доступными ему средствами в C++, а Вы выполните ее любыми доступными средствами в Java. Естественно исходники должны быть открыты и доступны всем участникам. Возможно даже Вы сможете заинтересовать смежный форум по С++ и получится даже некое межфорумное соревнование   Ну и конечно, например 5-10 тестов должны быть от форумчан С++ и 5-10 от поклонников Java. 

Уже приглашали: Coocky и Chipset-а, до конца так и не довели. Если есть охота займись.
А вообще есть раздел "Наши тесты" там и тема соответсвующая есть.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
$tatic
Дата 18.3.2007, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 28.1.2005

Репутация: нет
Всего: 22



Вы уже, наверное, видели мою тему в тестах о бенчмарке OpenGL на Java и C++. Сейчас уже есть один человек, который согласился написать код на C++. Правда он копирует мой весьма неоптимизированный (в плане графики, да и обхода дерева мешей) код на Java. Если кто-то хочет присоединиться - пожалуйста. Правда лично мне кажется, что производительность реальных графических приложений будет примерно одинакова - графика сейчас больше видеокартой обсчитывается, а не процессором.
Да и еще, есть такие игры как ИЛ2-Штурмовик, Chrome, Xtreme Rally (неплохой автосимулятор кстати, даже на небыстром компе летал), Закон и порядок. В них логика (все кроме графики) делалась на яве, а графический движок на C++. И ничего, геймеры не заметили в принципе. ;)
PM MAIL   Вверх
SaDFromSpb
Дата 19.3.2007, 03:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 5.4.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 3



Цитата($tatic @  18.3.2007,  22:36 Найти цитируемый пост)
Да и еще, есть такие игры как ИЛ2-Штурмовик, Chrome, Xtreme Rally (неплохой автосимулятор кстати, даже на небыстром компе летал), Закон и порядок. В них логика (все кроме графики) делалась на яве, а графический движок на C++. И ничего, геймеры не заметили в принципе. ;) 

Вот удивил, так удивил!... Это достоверная инфа?

VOS, +1.  
Действительно, многие сравнения не честны. В серверной джаве наверняка политика менеджера памяти сильно отличается от С++сных реализаций. Там, например, память вполне может выделяться большими блоками, которые по-тихоньку заполняются, к тому же удаляется это все дело фиг знает кода. В си, во-первых у тебя есть выбор, какую память выделять, во-вторых есть замечательная возможность с легкостью создать собственный менеджер памяти (или просто взять альтернативный, например, из библиотеки <locki> ), который будет несоизмеримо эффективнее по сравнению со стандартной операцией new для маленьких объектов. Так же есть возможность явно рекомендовать компилятору хранить определенную переменную в регистре и т.д. и т.п. (хотя это уже тонкий напильник....)  В яве всех этих возможностей нет, скажем так, по определению.
Так что, абсолютно уверен, что при небольшом желании на сях можно обогнать серверную джаву в любой задаче, если руки растут откуда надо.


Это сообщение отредактировал(а) SaDFromSpb - 19.3.2007, 07:51


--------------------
"За исключением части, касающейся потоков, библиотека Loki написана на стандартном языке С++. Увы, это означает, что многие современные компиляторы не смогут работать с ней в полном объеме." (А. Александреску. Modern C++ design. 2001)
PM   Вверх
SaDFromSpb
Дата 19.3.2007, 07:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 5.4.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 3



Ну может быть, еще компилятор для с++ половчее поискать прийдется для этого  smile 


--------------------
"За исключением части, касающейся потоков, библиотека Loki написана на стандартном языке С++. Увы, это означает, что многие современные компиляторы не смогут работать с ней в полном объеме." (А. Александреску. Modern C++ design. 2001)
PM   Вверх
LSD
Дата 19.3.2007, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(SaDFromSpb @  19.3.2007,  03:53 Найти цитируемый пост)
Так что, абсолютно уверен, что при небольшом желании на сях можно обогнать серверную джаву в любой задаче, если руки растут откуда надо.

А при определенных усилиях на асме можно обогнать любой Си smile 

Вот только в больших проектах возможности вылизывать каждую строчку кода - нет.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Бонифаций
Дата 19.3.2007, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 827
Регистрация: 15.9.2005
Где: Brisbane

Репутация: 1
Всего: 40



Цитата(SaDFromSpb @  19.3.2007,  03:53 Найти цитируемый пост)
Действительно, многие сравнения не честны. В серверной джаве наверняка политика менеджера памяти сильно отличается от С++сных реализаций


Я не согласен с таким определением честности. Если ява действует разумнее при распределении памяти, это ее достоинство. Так что если мы пишем один и тот-же алгоритм на C++/java и java обгоняет - то в этом тесте она победила. независимо от того, кто как управляет своими ресурсами.




--------------------
 Бонифаций.
 
PM MAIL ICQ Skype GTalk Jabber YIM   Вверх
SaDFromSpb
Дата 19.3.2007, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 5.4.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 3



Цитата(Бонифаций @  19.3.2007,  15:16 Найти цитируемый пост)
Я не согласен с таким определением честности. Если ява действует разумнее при распределении памяти, это ее достоинство. Так что если мы пишем один и тот-же алгоритм на C++/java и java обгоняет - то в этом тесте она победила.

Как тут уже сказали, проблема в том, что во многих примерах код явы просто скопировали на с++ и изменили, чтоб скомпилиось. Именно это не честно, потому что если бы человек изначально "думал" на си++, он бы реализовал решение по другому. Эту мысль высказал VOS, а я с ней согласился и добавил свою догадку об одной из причин обгона джавой сей в случае этих примеров.




Цитата(LSD @  19.3.2007,  15:12 Найти цитируемый пост)

Вот только в больших проектах возможности вылизывать каждую строчку кода - нет. 


Чем ты профессиональнее в конкретном языке, тем ты лучше пользуешся его естестественными возможностями. Поэтому у профессионалов опереденная "вылизанность" получается автоматически. 



--------------------
"За исключением части, касающейся потоков, библиотека Loki написана на стандартном языке С++. Увы, это означает, что многие современные компиляторы не смогут работать с ней в полном объеме." (А. Александреску. Modern C++ design. 2001)
PM   Вверх
LSD
Дата 19.3.2007, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(SaDFromSpb @  19.3.2007,  15:31 Найти цитируемый пост)
Чем ты профессиональнее в конкретном языке, тем ты лучше пользуешся его естестественными возможностями. Поэтому у профессионалов опереденная "вылизанность" получается автоматически.

Особенно использование сторонних менеджеров памяти smile 


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
$tatic
Дата 19.3.2007, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 28.1.2005

Репутация: нет
Всего: 22



Цитата(SaDFromSpb @  19.3.2007,  04:53 Найти цитируемый пост)
Вот удивил, так удивил!... Это достоверная инфа?

Это достоверная инфа, правда игру Закон и порядок я к сожалению "не щупал". Но Chrome и Xtreme Rally сделаны одной фирмой на одном и том же движке. А Chrome выиграл даже конкурс от Sun Microsystems.

Это сообщение отредактировал(а) $tatic - 19.3.2007, 20:05
PM MAIL   Вверх
JUncle
Дата 19.3.2007, 23:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 6.4.2006
Где: Казань, РФ

Репутация: нет
Всего: 1



Цитата(LSD @  19.3.2007,  15:12 Найти цитируемый пост)
Вот только в больших проектах возможности вылизывать каждую строчку кода - нет. 

А особенно при использовании agile методологий,  где предпочтительнее прозрачный код чем мифическое ускорение на три наносекунды  smile 
--------------------
class JUncle extends Man // singleton{/*...*/}
PM MAIL   Вверх
SaDFromSpb
Дата 20.3.2007, 03:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 5.4.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 3



Цитата(LSD @  19.3.2007,  15:41 Найти цитируемый пост)
Особенно использование сторонних менеджеров памяти smile 

Если прийдешь к осознанию, что это нужно, то это дело пяти минут (если, конечно, не самому писать).

Цитата(JUncle @  19.3.2007,  23:29 Найти цитируемый пост)
А особенно при использовании agile методологий,  где предпочтительнее прозрачный код чем мифическое ускорение на три наносекунды

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

Тут у нас религиозная война не начинается, случаем?  smile 



--------------------
"За исключением части, касающейся потоков, библиотека Loki написана на стандартном языке С++. Увы, это означает, что многие современные компиляторы не смогут работать с ней в полном объеме." (А. Александреску. Modern C++ design. 2001)
PM   Вверх
VOS
Дата 20.3.2007, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 31.1.2007

Репутация: нет
Всего: 8



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

Итак первоначальный тест:

Код

  //Первый, самый тормозной способ (6781 мс, без delete с - 2875 мс)
  double d = GetTickCount();
  A* c;
  double r=0;
   for (int i=0;i<10000000;i++)
    {
      c=new A;
      r+=c->TT(i,i+1);
     delete c;
    }
   d=(GetTickCount()-d);
   ShowMessage(d);
   ShowMessage®;


Код

//Слегка измененный.  

 //Другой способ. Кол-во объектов динамическое, время - 421 мс
  double d = GetTickCount();
    A* b;
   //Выделить сразу пул памяти под объекты
   //Теперь pull указывает на группу подряд расположенных объектов
    A* pull = new A[10000000];

   //<Отвлечение>
   //В более общем случае лучше переопределять new в классе A
   //тогда можно составить связной список и выделять память по мере надобности
   //сразу кусками по SIZE элементов. При этом оставив возможность "удалять" отдельные объекты.
   //Конечно, реальная память из пула удаляться не будет, но на то он и пул :)
   //Или вести списки с такими кусками объектов. Притом можно разных типов, главное чтобы они были от одного предка.
   //Возможно в Java используют примерно такой способ. А сборщик мусора "упаковывает"
   //объекты в эти "куски", по мере надобности освобождая память сразу целыми кусками.
   //Недаром он там че-то, где-то помечает и приоритеты расставляет.
   //Скорее всего указатели в списке перетыкает :) 
   //Но память при этом он расходует естественно больше. Более того, подозреваю что блоки он выделяет бинарно, т.е.
   //например 1024, израсходовал, то след. блок сразу 2048, потом 4096 и т.д. (Подчеркиваю это IMHO) 
   //</Отвлечение>

   //Если же объекты часто исчезают и появляются, то лучше всего через
   // A a;


  double r=0;
  for (int i=0;i<10000000;i++)
    {
      //Обращаться к элементам теперь можно так:
      r+=pull[i].TT(i,i+1);
      //или так
//      b = pull+i;
//      r+=b->TT(i,i+1);
     //Или так
//      r+=(pull+i)->TT(i,i+1);
    }
   d=(GetTickCount()-d);
   ShowMessage(d);
   ShowMessage®;
   delete [] pull;


Первый тест - 6781 мс
Второй         - 421 мс

Комп - P4  2,4 Ггц  512 МБ
На нем запущен CBuilder, NOD, MS SQL, Oracle, Firebird и т.д. (лень выгружать было)

Это сообщение отредактировал(а) batigoal - 20.3.2007, 11:41
PM MAIL   Вверх
LSD
Дата 20.3.2007, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(VOS @  20.3.2007,  10:23 Найти цитируемый пост)
Первый тест - 6781 мс
Второй         - 421 мс

Это сферический конь в вакуме. Смысл имеют только относительные результаты.

Что же касается кода, то второй пример ни разу не эквивалентен первому. Т.к. во втором случае мы не можем освобождать память по мере необходимости, и если из 10 000 000 объектов нам нужен будет только один, то мы будем держать всю память занятой.

P.S. Не верю я что на машине с 512 Мб памяти и такой толпой запущенных программ:
Цитата(VOS @  20.3.2007,  10:23 Найти цитируемый пост)
На нем запущен CBuilder, NOD, MS SQL, Oracle, Firebird и т.д.

можно комфортно работать. Те же MS SQL и Oracle, памяти жрут немерянно.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
VOS
Дата 20.3.2007, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 31.1.2007

Репутация: нет
Всего: 8



Цитата

Это сферический конь в вакуме. Смысл имеют только относительные результаты


Изволите за ЦСКА болеть?
Согласен конечно. Но относительные результаты думаю очевидны.

Цитата

Что же касается кода, то второй пример ни разу не эквивалентен первому. Т.к. во втором случае мы не можем освобождать память по мере необходимости, и если из 10 000 000 объектов нам нужен будет только один, то мы будем держать всю память занятой.


Я не претендую на это. Всего лишь показал как решить конкретную задачу - быстро создать в куче много небольших объектов.
Реализация механизма, о котором я упомянул во втором примере, позволит и удалять отдельные объекты, но 
его реализовывать только ради теста у меня нет времени.

Цитата

 Не верю я что на машине с 512 Мб памяти и такой толпой запущенных программ...

Это если их активно юзать. Если только хранимки править, то не особо напрягает. А вот когда еще среда разработки для Java запускается, вот тогда не сладко smile Но на Java я пока только под мобилы пишу. Впечатления самые положительные. 
PM MAIL   Вверх
alexsolo
Дата 5.4.2007, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 5.4.2007

Репутация: нет
Всего: нет



Цитата(VOS @ 10.3.2007,  14:49)
Это в корне неверный подход. Хотите получить реальные тесты по производительности, пригласите специалиста в C++. Поставьте ему задачу и пусть он ее сделает любыми доступными ему средствами в C++, а Вы выполните ее любыми доступными средствами в Java. Естественно исходники должны быть открыты и доступны всем участникам. 

Вот шикарный тест из LZMA SDK и Java и C# и оптимизтрованный C++ и Delphi:

Исходники и бинарники (1.6 MB) Данные прогона на моих компах smile

Код


           Compression                Decompression  

P4 2.6 GHz
~~~~~~~~~~
C++        918 KB/s   1081 MIPS       10261 KB/s   1034 MIPS
Delphi7    645 KB/s    759 MIPS        6410 KB/s    629 MIPS
Java 1.6   608 KB/s    716 MIPS        7026 KB/s    690 MIPS
C#         588 KB/s    692 MIPS        9230 KB/s    930 MIPS

AMD64 3000+ 2 Ghz
~~~~~~~~~~~~~~~~~
C++       1369 KB/s   1612 MIPS       18505 KB/s   1865 MIPS
Java 1.6   890 KB/s   1048 MIPS       11013 KB/s   1082 MIPS
Delphi10F  796 KB/s    937 MIPS        9961 KB/s    978 MIPS
Delphi7    770 KB/s    906 MIPS        9466 KB/s    930 MIPS
C#         757 KB/s    891 MIPS       13833 KB/s   1394 MIPS

INTEL M760 2 Ghz
~~~~~~~~~~~~~~~~
C++       1346 KB/s   1585 MIPS       18831 KB/s   1898 MIPS
Java 1.6   873 KB/s   1028 MIPS        9888 KB/s    971 MIPS
Delphi7    820 KB/s    966 MIPS        7895 KB/s    775 MIPS
C#         784 KB/s    924 MIPS       12307 KB/s   1240 MIPS

Core Duo E6600 2.4 GHz - 1 Core
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C++       1970 KB/s    2320 MIPS      20490 KB/s   2065 MIPS 
Java 1.6  1224 KB/s    1442 MIPS      13315 KB/s   1308 MIPS
Delphi10F 1142 KB/s    1345 MIPS      10745 KB/s   1055 MIPS
C#        1087 KB/s    1280 MIPS      15465 KB/s   1559 MIPS
Delphi7   1063 KB/s    1252 MIPS       9817 KB/s    964 MIPS

PM MAIL   Вверх
LSD
Дата 5.4.2007, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



alexsolo

1. Откуда исходники и под какой лицензией они распространяются?
2. Кто писал код?


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Void
Дата 5.4.2007, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 1
Всего: 173



LSDhttp://www.7-zip.org/sdk.html
Try for yourself smile


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
_Nikolas_
Дата 12.4.2007, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 6.2.2007

Репутация: нет
Всего: нет



Не вижу ничего удивительного что жава работает с обычными числами по скорости как С/С++.
По моему основные тормаза по сравнению с С/С++ жаве добавляет ядреное ООП. Всетки большинство реальных приложений на жаве работают заметно медленее их аналогов на С++ и едят больше памяти.
PM MAIL WWW   Вверх
Се ля ви
Дата 20.4.2007, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java/SOAрхитектор
****


Профиль
Группа: Модератор
Сообщений: 2016
Регистрация: 5.6.2004
Где: place without tim e and space

Репутация: 8
Всего: 127



В продолжение спора о BEA JRockit. Я продолжаю утверждать, что эта JVM лучше подходит для production-mode J2EE - приложений, даже если они крутятся не на WebLogic`е.

Вот, буквально на днях они выпустили JRockit для Java SE 6.

В качестве примера я взял на своём рабочем компе (P4, 2.8 GHz, 1GB  RAM, WinXP sp2) и протестировал старт сервера JBoss 4.0.5 под последними 5-ми и 6-ми версиями на данный момент. Ничего не настраивал, просто скачал и развернул архив. Результаты такие:

JRockit 6:
Цитата
17:34:22,776 INFO  [ServerInfo] Java VM: BEA JRockit® R27.2.0-131-78843-1.6.0-20070320-1457-windows-ia32,BEA Systems, Inc.
...
17:34:42,344 INFO  [Server] JBoss (MX MicroKernel) [4.0.5.GA (build: CVSTag=Branch_4_0 date=200610162339)] Started in 20s:499ms


JRockit 5
Цитата
17:43:19,878 INFO  [ServerInfo] Java VM: BEA JRockit® R27.2.0-131-78843-1.5.0_10-20070320-1457-windows-ia32,BEA Systems, Inc.
...
17:43:42,060 INFO  [Server] JBoss (MX MicroKernel) [4.0.5.GA (build: CVSTag=Branch_4_0 date=200610162339)] Started in 23s:323ms


Sun JDK 5:
Цитата
17:49:49,147 INFO  [ServerInfo] Java VM: Java HotSpot™ Server VM 1.5.0_11-b03,Sun Microsystems Inc.
...
17:50:29,275 INFO  [Server] JBoss (MX MicroKernel) [4.0.5.GA (build: CVSTag=Branch_4_0 date=200610162339)] Started in 40s:849ms


А Sun JDK 6 почему-то вообще с ошибкой свалилась:
Цитата
18:00:17,501 INFO  [ServerInfo] Java VM: Java HotSpot™ Server VM 1.6.0_01-b06,Sun Microsystems Inc.
...
18:00:30,289 ERROR [MainDeployer] Could not create deployment: file:/C:/Java/JBoss4/server/default/conf/jboss-service.xml
org.jboss.deployment.DeploymentException: - nested throwable: (java.lang.reflect.UndeclaredThrowableException)
        at org.jboss.system.ServiceConfigurator.install(ServiceConfigurator.java:196)
        at org.jboss.system.ServiceController.install(ServiceController.java:226)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
...

Сейчас, разберусь с 6-й JDK - ещё напишу...


--------------------
  )
 (
[_])
проф. блог

Кролики думали, что занимаются любовью, а на самом деле их просто разводили...
PM MAIL WWW Skype GTalk   Вверх
LSD
Дата 20.4.2007, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Как лицензируется JRockit?


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Се ля ви
Дата 20.4.2007, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java/SOAрхитектор
****


Профиль
Группа: Модератор
Сообщений: 2016
Регистрация: 5.6.2004
Где: place without tim e and space

Репутация: 8
Всего: 127



Дома тоже эта ошибка наблюдалась. Переставил - вроде пошло. Но машина другая (P4 3GHz, 2Gb RAM), так что - всё по-новой:

Sun JDK 6: 
Цитата
00:04:20,359 INFO  [ServerInfo] Java VM: Java HotSpot™ Server VM 1.6.0_01-b06,Sun Microsystems Inc.
...
00:04:42,265 INFO  [Server] JBoss (MX MicroKernel) [4.0.5.GA (build: CVSTag=Branch_4_0 date=200610162339)] Started in 22s:453ms


Sun JDK 5: 
Цитата
00:11:31,781 INFO  [ServerInfo] Java VM: Java HotSpot™ Server VM 1.5.0_11-b03,Sun Microsystems Inc.
...
00:11:57,562 INFO  [Server] JBoss (MX MicroKernel) [4.0.5.GA (build: CVSTag=Branch_4_0 date=200610162339)] Started in 26s:328ms


BEA JRockit 6: 
Цитата
00:13:54,047 INFO  [ServerInfo] Java VM: BEA JRockit® R27.2.0-131-78843-1.6.0-20070320-1457-windows-ia32,BEA Systems, Inc.
...
00:14:10,953 INFO  [Server] JBoss (MX MicroKernel) [4.0.5.GA (build: CVSTag=Branch_4_0 date=200610162339)] Started in 17s:984ms


BEA JRockit 5: 
Цитата
00:16:29,562 INFO  [ServerInfo] Java VM: BEA JRockit® R27.2.0-131-78843-1.5.0_10-20070320-1457-windows-ia32,BEA Systems, Inc.
...
00:16:45,938 INFO  [Server] JBoss (MX MicroKernel) [4.0.5.GA (build: CVSTag=Branch_4_0 date=200610162339)] Started in 17s:422ms


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


Цитата(LSD @  20.4.2007,  21:55 Найти цитируемый пост)
Как лицензируется JRockit?

Ссылка для скачки на сайте BEA сопровождается текстом: 
Цитата
Freely Available! BEA JRockit is available for free download for evaluation and production use.

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

Я думаю, дело в том, что к JRockit идут дополнительные инструменты для диагностики memory leak`ов  и тюнинга - вот их использование уже вроде бы платно, хотя их тоже можно и скачивать и юзать - но уже в права на них я не вникал...


--------------------
  )
 (
[_])
проф. блог

Кролики думали, что занимаются любовью, а на самом деле их просто разводили...
PM MAIL WWW Skype GTalk   Вверх
Се ля ви
Дата 21.4.2007, 02:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java/SOAрхитектор
****


Профиль
Группа: Модератор
Сообщений: 2016
Регистрация: 5.6.2004
Где: place without tim e and space

Репутация: 8
Всего: 127



Вот по поводу Tools`овин информация:
Цитата(http://dev2dev.bea.com/jrockit/tools.html)
JRockit Mission Control is currently included in BEA JRockit R27.1 JDK. BEA JRockit can be downloaded from the JRockit Product Center on Dev2Dev. To use the included Mission Control tools, you need to download a suitable license. There are two types of licenses:
    * Developer License - The Developer License is free and allows the tools to be used for 1 hour, after which JRockit must be restarted before running the tools again.
    * Enterprise License - The Enterprise License allows unlimited use of the tools.



--------------------
  )
 (
[_])
проф. блог

Кролики думали, что занимаются любовью, а на самом деле их просто разводили...
PM MAIL WWW Skype GTalk   Вверх
w1nd
Дата 22.4.2007, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 20
Всего: 54



Цитата(Се ля ви @  20.4.2007,  17:01 Найти цитируемый пост)
Я продолжаю утверждать, что эта JVM лучше подходит для production-mode J2EE - приложений, даже если они крутятся не на WebLogic`е.

Не считая одной малости: по словам ведущего системного инженера BEA Systems (Мачей Грушка), JRockit стоит использовать только при наличии глубоких знаний о её внутреннем устройстве и способах её настройки. Я могу прокомментировать: эта jmv может на совершенно ровном месте упасть не пискнув или намертво зависнуть, причём частота таких падений/зависаний удручает.

Короче, господа, есть только одна jvm и делают её в sun ;)

Это сообщение отредактировал(а) w1nd - 22.4.2007, 21:24


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
Се ля ви
Дата 23.4.2007, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java/SOAрхитектор
****


Профиль
Группа: Модератор
Сообщений: 2016
Регистрация: 5.6.2004
Где: place without tim e and space

Репутация: 8
Всего: 127



Цитата(w1nd @  22.4.2007,  21:21 Найти цитируемый пост)
по словам ведущего системного инженера BEA Systems (Мачей Грушка), JRockit стоит использовать только при наличии глубоких знаний о её внутреннем устройстве и способах её настройки.

В следующий раз, когда он приедет в Москву, я его расспрошу об этом по-подробней.


Цитата(w1nd @  22.4.2007,  21:21 Найти цитируемый пост)
могу прокомментировать: эта jmv может на совершенно ровном месте упасть не пискнув или намертво зависнуть, причём частота таких падений/зависаний удручает.

Ну, бывало несколько раз такое дело... Сервак на прошлой работе падал в среднем раз в 2-3 месяца без записей в логах и прочих следов и совершенно независимо от нагрузки. Но это не так уж часто...

А ты уверен, что Sun`овская не упадёт, активно работая в режиме 24/7 через 2-3 месяца без перерыва?

Цитата(w1nd @  22.4.2007,  21:21 Найти цитируемый пост)
Короче, господа, есть только одна jvm и делают её в sun ;)

IBM`овская есть ещё, к примеру...


--------------------
  )
 (
[_])
проф. блог

Кролики думали, что занимаются любовью, а на самом деле их просто разводили...
PM MAIL WWW Skype GTalk   Вверх
w1nd
Дата 23.4.2007, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 20
Всего: 54



Цитата(Се ля ви @  23.4.2007,  10:20 Найти цитируемый пост)
А ты уверен, что Sun`овская не упадёт, активно работая в режиме 24/7 через 2-3 месяца без перерыва?

На моей памяти не падала.

Цитата(Се ля ви @  23.4.2007,  10:20 Найти цитируемый пост)
IBM`овская есть ещё, к примеру...

Не поминай всуе, а то ышшо явится smile Её ещё толком не юзал, но приконнектиться к ней из sun'овской по корбе... это такая гимнастика для всех частей тела, что я молчу smile 


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
alexsolo
Дата 25.4.2007, 00:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 5.4.2007

Репутация: нет
Всего: нет



Возвращаясь к бенчмаркам. Сегодня тестируется следующий код:

Код


import java.util.Date;

public class Main {
 
    public static void main(String[] args) {

        int razmer = 12;
        int[] b = new int [30];
 
        long Time1, Time2;
        
        int d,m,min,obmen;
        int nomvar;

        for (d=1; d<=20; d++) b[d] = d;
        
        nomvar = 0;

        Time1 = (new Date()).getTime();

        while (true){
         nomvar++;
         for ( m = razmer; m > 1; m-- ) 
           if (b[m]>b[m-1]) break;
         if (m==1) break;
         obmen = m-1;
         for (min = obmen+1; min <= razmer; min++)
       if ((b[min]<b[m]) && (b[min]>b[obmen])) m = min;
         
         min = b[obmen];
         b[obmen] = b[m];
         b[m] = min;
         
         for (d = obmen+1; d < razmer; d++)
         {
            m = d;
            for ( min = d + 1; min <= razmer; min++ )
              if ( b[min] < b[m] ) m = min;
            
            min = b[m];
            b[m] = b[d];
            b[d] = min;
         };
            
            
        }
    
     System.out.println("Count: " + nomvar );   
     Time2 = (new Date()).getTime();
     System.out.println("Time: " + (Time2 - Time1) + " (ms)" );   
        
    }
}


Результаты забегов:
Код


Intel Core Duo E6600 (3.1 Ghz)

Intel C++      3531 ms
Delphi10 proc      3625 ms
C++Builer         4360 ms
VC++ 2005      4469 ms
Delphi10 goto      4519 ms
Delphi10 repeat   5172 ms
C#                5300 ms
Java 1.6         10234 ms


AMD Athlon 64 3000+ (2 Ghz)

Intel C++      8328 ms
Delphi10 proc      8875 ms
Delphi10 goto      9157 ms
C++Builer         9400 ms
VC++ 2005     10656 ms
C#               11375 ms
Delphi10 repeat  11391 ms
Java 1.6         16000 ms


INTEL M760 (2 Ghz)

Intel C++      7187 ms
Delphi10 goto      7344 ms
Delphi10 proc      8046 ms
Delphi10 repeat   8500 ms
C++Builer         8550 ms
VC++ 2005      8640 ms
Java 1.6         20900 ms


P4 (2.6 Ghz)

Intel C++     7484 ms
Delphi10 goto     7813 ms
C++Builer        7907 ms
Delphi10 proc     9141 ms
Delphi10 repeat  9422 ms
VC++ 2005    10344 ms
C#              12031 ms
Java 1.6        17312 ms


Исходники + бинарники:
http://www.mycoolfotos.com/lzma/repeat_goto.zip (371 KB)


PM MAIL   Вверх
nornad
Дата 25.4.2007, 01:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



Цитата(alexsolo @  25.4.2007,  03:35 Найти цитируемый пост)
Результаты забегов:

Не понял, к чему это? то должны показать эти результаты?
То, что мобильный проц медленнее? И так понятно. То, что одноядерный АМД 2ГГц медленне двуядерного интела 3ГГц?

Просветите уж, для выявления чего сделан тест. И причём тут медленность жабы.


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
LSD
Дата 25.4.2007, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



А что вообще за алгоритм, то? И почему такая странная инициализация массива?


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
NotGonnaGetUs
Дата 25.4.2007, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 25.2.2005
Где: Москва

Репутация: 4
Всего: 12



Источником этих тестов служит обсуждение на sql.ru.

Один и тот же алгоритм генерации перестановок копировался один в один с языка на язык и замерялось время работы.

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

Увидив это, я предложил другой алгоритм решения той же самой задачи и протестировал его на java/c#.
Оказлось, что теперь java в полтора раза быстрее с#. Это довольно занимательный факт.

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

PM MAIL   Вверх
VOS
Дата 25.4.2007, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 31.1.2007

Репутация: нет
Всего: 8



Полагаю, что в конечном счете код, сгенерированный JIT-компилятором будет более быстрым, чем код сгенерированный классическим компилятором. В классике код генерируется один раз и, соответственно, остается постоянным.
JIT-компилятор же может в зависимости от внешних условий генерировать "изменяемый" код, а значит теоретически и более быстрый. 
Думаю особенно заметно это может быть в приложениях, которые должны работать в режиме 24X7 с надежностью не менее 99,99%
(не более нескольких часов в год простоя).
Там будет возможность собрать статистику вызовов и т.д., чтобы сгенерировать более оптимальный код для часто вызываемых функций, заменить их на inline, параметры не через стек, а в регистах , перегенерить так, чтобы часто отрабатываемый код целиком помещался во внутренний кеш конкретного проца, корректировать механизм выделения памяти и т.д. 

Аналогию можно провести с хранимыми процедурами. Работают быстро, потому что хранимка вроде как "скомпилирована". По большому счету это значит, что уже построен и сохранен план запроса. Соответственно выбраны индексы и т.д. Но это не всегда здорово, т.к. например на момент создания хранимки таблица A, участвующая в запросе содержала всего 15 записей, и план запроса оптимизатором строился исходя из этого. После месяца работы таблицу A раздуло и все, сохраненный план может быть уже далеко не оптимален.

Я это к тому, чтобы не удивлялись поклонники Delphi, а потом и С++ " как это интерпретируемый Java обогнал по скорости компилируемый
Delphi/C++/...".  Это вполне возможно для некоторых классов задач.
PM MAIL   Вверх
batigoal
Дата 25.4.2007, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 24
Всего: 151



В теории это звучит заманчиво, но реализуют ли сейчас интерпретаторы такую функциональность?


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Platon
Дата 27.10.2007, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: 16
Всего: 40



Подолью огонька в диалог.
Стоит ли использовать технологию, которую потом приходится обвешивать всяческого рода native библиотеками (мягко намекая на GUI Swing и SWT), тогда уж действительно слогон "compile once - run everywhere" становится не актуальным, более того начинает проигрывать девизу "write once - compile everywhere", хотя справедливости ради замечу, что в 1.5 версии отрисовка GUI становится сносной, а в 1.6 даже шустрой.
PM MAIL ICQ   Вверх
w1nd
Дата 27.10.2007, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 20
Всего: 54



Цитата(Platon @  27.10.2007,  17:50 Найти цитируемый пост)
Стоит ли использовать технологию, которую потом приходится обвешивать всяческого рода native библиотеками (мягко намекая на GUI Swing и SWT), тогда уж действительно слогон "compile once - run everywhere" становится не актуальным, более того начинает проигрывать девизу "write once - compile everywhere", хотя справедливости ради замечу, что в 1.5 версии отрисовка GUI становится сносной, а в 1.6 даже шустрой.

Честно говоря, не осилил. Что вы хотели сказать?


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
nornad
Дата 28.10.2007, 05:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



Platon, не надо нас переманивать с Java на другие платформы. smile
GUI даже на 1.4 можно было нарисовать так, чтобы он особенно не тормозил. Просто, большинство программистов знало, как что-то реализовать в принципе, но не знало, как именно это лучше сделать, чтобы не добавлять лишних тормозов.


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
Platon
Дата 28.10.2007, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: 16
Всего: 40



w1nd, другими словами хочу сказать, что проще программировать на C++ с помощью Qt, иметь абсолютно родное приложение, при этом написать код один раз и скомпилировать его посредством разных компиляторов.


nornad, в поисках истины прибегаю и к критике. Не могу сказать, что переманиваю, скорее сказать,  прошу, чтоб успокоили и переубедили.
Цитата(nornad @  28.10.2007,  05:54 Найти цитируемый пост)
GUI даже на 1.4 можно было нарисовать так, чтобы он особенно не тормозил.

На это могу сказать так, что даже если ты плохо программируешь, в родном приложении тормозов можно не заметить, но на Java у тебя постоянная необходимость в том, чтобы весь код был максимально оптимизирован. Это изречение безусловно двояко, можно сказать, что код и так должен быть оптимизированным, НО и можно сказать, что GUI приложения завоевали себе неважную славу. 

ЗЫ: Используя метод от противного. Если принять за истину, что GUI-приложения на Java работают быстро, то нет необходимости в разработке родных GUI-библиотек, что противоречит действительности. => GUI-приложения медленные. ЧТД
PM MAIL ICQ   Вверх
nornad
Дата 28.10.2007, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



Цитата(Platon @  28.10.2007,  15:21 Найти цитируемый пост)
хочу сказать, что проще программировать на C++ с помощью Qt, иметь абсолютно родное приложение, при этом написать код один раз и скомпилировать его посредством разных компиляторов.

А ты в курсе, сколько стоит Qt?  smile 

Цитата(Platon @  28.10.2007,  15:21 Найти цитируемый пост)
ЧТД

Малость абстрактно и притянуто за уши, но я скорее согласен, чем нет. smile


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
Platon
Дата 28.10.2007, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: 16
Всего: 40



Цитата(nornad @  28.10.2007,  16:21 Найти цитируемый пост)
А ты в курсе, сколько стоит Qt?  smile 

В курсе, но там есть некоммерческие релизы + мы же в России живем )))

Цитата(nornad @  28.10.2007,  16:21 Найти цитируемый пост)
Малость абстрактно и притянуто за уши

Можно узнать в каком месте притянуто?
PM MAIL ICQ   Вверх
nornad
Дата 28.10.2007, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



Цитата(Platon @  28.10.2007,  19:26 Найти цитируемый пост)
В курсе, но там есть некоммерческие релизы + мы же в России живем )))

Как-то глядел у них на сайте и не видел некоммерческого. Хотя, мог и проглядеть.
А подстрекать к нарушению прав на интеллектуальную собственность не стоит. smile 
Работать же приходится нередко и с зарубежными партнёрами. Ну и ещё. Если твоя программа написана с использованием украденного Qt (или чего другого), то на рынок США, например, соваться с нею проблематично - если будет установлен факт нарушения прав, это грозит кучей неприятностей и штрафов.
Конечно, если пишешь под себя (блин, классная фраза получилась - можно не только ходить под себя, но и писАть smile) или маленькой компании в небольшом городе - можно и ворованый код использовать. Всё равно никто не узнает, а если и узнает - не так страшно.

Цитата(Platon @  28.10.2007,  19:26 Найти цитируемый пост)
Можно узнать в каком месте притянуто?

Можно. Ты сознательно не учёл многие факторы. А эти факторы в определённых условиях могут повлиять на итог.


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
w1nd
Дата 28.10.2007, 19:48 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 20
Всего: 54



Цитата(Platon @  28.10.2007,  12:21 Найти цитируемый пост)
w1nd, другими словами хочу сказать, что проще программировать на C++ с помощью Qt, иметь абсолютно родное приложение, при этом написать код один раз и скомпилировать его посредством разных компиляторов.

Platon, если бы на C++ было бы проще программировать, то не было бы ни java, ни .net, ни delphi. Если бы Qt предоставляла бы больше возможностей, чем java runtime, то они не делали бы jambi.

Цитата(Platon @  28.10.2007,  12:21 Найти цитируемый пост)
На это могу сказать так, что даже если ты плохо программируешь, в родном приложении тормозов можно не заметить, но на Java у тебя постоянная необходимость в том, чтобы весь код был максимально оптимизирован. 

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

Цитата(Platon @  28.10.2007,  12:21 Найти цитируемый пост)
ЗЫ: Используя метод от противного. Если принять за истину, что GUI-приложения на Java работают быстро, то нет необходимости в разработке родных GUI-библиотек, что противоречит действительности. => GUI-приложения медленные. ЧТД

А необходимости в альтернативных гуях действительно нет. Попробуйте провести тесты - вы удивитесь ;)

[hr]
В любом случае, будущее не за компилируемым кодом.

Это сообщение отредактировал(а) w1nd - 28.10.2007, 19:49


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
Platon
Дата 28.10.2007, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: 16
Всего: 40



w1nd, действительно на C++ сложнее программировать, поэтому вечеринки устраиваю в форуме Java ^_^ но, думаю, если бы java производил родное приложение, то все бы занимались этим...


Цитата(w1nd @  28.10.2007,  19:48 Найти цитируемый пост)
Точнее, одной грубой ошибки - исполнения кода в гуёвом потоке.

И без этого тормозов хватает, исключая пожалуй 1.6, интересно 1.7. совсем выйдет на скорость родных приложений?

Добавлено через 9 минут и 51 секунду
Цитата(w1nd @  28.10.2007,  19:48 Найти цитируемый пост)
Неверно с обоих сторон. Во-первых, многие нативные приложения потормознее будут, во-вторых, на java достаточно не совершать грубых ошибок.

Вспомним понятие "теория игр", где оба игрока играют максимально оптимально.
PM MAIL ICQ   Вверх
Platon
Дата 28.10.2007, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: 16
Всего: 40



Цитата(w1nd @  28.10.2007,  19:48 Найти цитируемый пост)
Если бы Qt предоставляла бы больше возможностей, чем java runtime, то они не делали бы jambi.

Факт коверкается. jambi сделан как раз для того, чтобы была возможность писать по возможности более родные приложения, так же как и SWT.

Ах, да, у Java же есть такой прекрасный механизм, как сборка мусора, и перед этим стоит преклонить колено ^_^

Это сообщение отредактировал(а) Platon - 28.10.2007, 22:16
PM MAIL ICQ   Вверх
powerOn
Дата 28.10.2007, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 47
Всего: 159



Понятия "быстро" и "медленно" весьма относительны. smile Мне больше нравится понятие "достаточно".
Ну вот, допустим, выполняется отрисовка на С++ за 0,001 секунды, а на Java за 0,003. И работает Java (допустим) в 3 раза медленнее.... Ну и что? Пользователю то оно без разницы, он все равно этого не заметит... Этой скорости достаточно (при определенной "прямости рук" программиста), что бы реализовать отзывчивый пользовательский интерфейс. Плюс еще развитие железа идет полным ходом, что серьезно сглажвает разницу.
Что касается игрушек, так тут конечно дело за OpenGL и т.п. 

P.S.: Раньше-то (а может и сейчас) частенько на ассемблере куски кода писали, считали, что код после С++ компиляции медленно работал... тоже наверное воевали, что мол С++ сакс, а Asm рулез... smile Но в итоге пришли к мнению, что достаточно того что С++ выдает. 



--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
Platon
Дата 28.10.2007, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: 16
Всего: 40



Цитата(powerOn @  28.10.2007,  23:20 Найти цитируемый пост)
Ну вот, допустим, выполняется отрисовка на С++ за 0,001 секунды, а на Java за 0,003.

Несложно подсчитать, что программисту C++ можно быть в 3 раза криворукей чем Java программисту ^_^

Цитата(powerOn @  28.10.2007,  23:20 Найти цитируемый пост)
что мол С++ сакс, а Asm рулез...

Ну, тут тоже надо разделять понятия "необходимый" и "достаточный"

В общем, ждем семерки с ее improved code, а там можно и поговорить далее.
PM MAIL ICQ   Вверх
nornad
Дата 29.10.2007, 05:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



Цитата(Platon @  29.10.2007,  02:38 Найти цитируемый пост)
Несложно подсчитать, что программисту C++ можно быть в 3 раза криворукей чем Java программисту ^_^

Ну, если программисту пофигу, что за Г он выдаёт - да, можно. Только вот хорошие программисты обычно стараются писать хороший код.  smile 
Цитата(Platon @  29.10.2007,  02:38 Найти цитируемый пост)
Ну, тут тоже надо разделять понятия "необходимый" и "достаточный"

Раньше бывали случаи, когда было просто необходимо делать вставки на асме. Компилятор С/С++ вставлял кучу лишних действий, что сильно замедляло код. Плюс, мощности машин были ниже. Сейчас компиляторы стали поумнее, а мощности выросли. Поэтому сейчас вставки на асме делают намного реже. Потому как необходимости нет.


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
Platon
Дата 29.10.2007, 09:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: 16
Всего: 40



Не люблю я экстенсивный способ развития  smile   но видимо тоже веяние времени.
Тогда поставим вопрос так: почему Java не может включить в стандартную поставку одну из родных библиотек?
PM MAIL ICQ   Вверх
powerOn
Дата 29.10.2007, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 47
Всего: 159



Цитата(Platon @  29.10.2007,  10:41 Найти цитируемый пост)
почему Java не может включить в стандартную поставку одну из родных библиотек?

В каком смысле "родных"? Если в смысле "нативных", то она поставляет... поищите в подпапках JRE по маске *.dll


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
w1nd
Дата 29.10.2007, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 20
Всего: 54



Цитата(Platon @  28.10.2007,  20:09 Найти цитируемый пост)
думаю, если бы java производил родное приложение, то все бы занимались этим...

Использование jvm приносит бенефиции, недостижимые для родных приложений.

Цитата(Platon @  28.10.2007,  21:43 Найти цитируемый пост)
 jambi сделан как раз для того, чтобы была возможность писать по возможности более родные приложения, так же как и SWT.

Да ну? А не для того, чтобы приобрести новых пользователей? Приложения QT ничуть не роднее приложений на java для любой из систем.




--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
Platon
Дата 12.1.2008, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: 16
Всего: 40



Подкину дров:
Javolution
Цитата

Javolution is a real-time library aiming to make Java applications faster and more time predictable.

Какого черта это имеет место быть?!
Цитата

Latest release  5.2 / August 19, 2007

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

Если бы java не была такой нерасторопной, никаких real time specifications выдумывать не нужно было бы, я так думаю.

Сразу приношу извинения, если в чем-то ошибаюсь, я провожу расследование по этому вопросу, в том числе поделился с местным населением.

Это сообщение отредактировал(а) Platon - 12.1.2008, 12:35
PM MAIL ICQ   Вверх
batigoal
Дата 12.1.2008, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 24
Всего: 151



Platon, real-time системы - это не более быстрые системы, это более предсказуемые системы. Возможно, речь идёт именно об этом?

Хотя Сановцы уже сделали свою реализацию Java Real-Time, так что не знаю.

Добавлено через 6 минут
Да, похоже так и есть. Плюс ещё какие-то оптимизации.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
LSD
Дата 12.1.2008, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата
"Real-Time", as used in the context of the Sun Java Real-Time System product, means predictable. Real-time does not, in this context, have the sort of "in the moment" meaning that you hear in, for example, gaming circles. Real-Time Java means a version of Java that can support predictable responses to real-world events as defined by the RTSJ (Real-Time Specification for Java).

Источник.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
batigoal
Дата 12.1.2008, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 24
Всего: 151



Ну, это, конечно, не единственное отличие RTJ от обычной Явы, но главное.

Это сообщение отредактировал(а) batigoal - 12.1.2008, 18:07


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
LSD
Дата 12.1.2008, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



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


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Platon
Дата 17.2.2008, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: 16
Всего: 40



Еще меня расстраивает размеры программы в памяти! Простая программка-чат с возможностью предачи файлов и сообщений, занимает 50 М, тогда как полноценная программка, к примеру QIP занимает всего 5(!)М. Согласитесь, программисту, пишущему на Object Pascal (qip написан на нем) спокойно можно быть минимум в 10 раз криворучей, чем Java программисту!

Возьмем к примеру браузер Opera : средний размер программы в памяти 20-30М, при этом ясно куда уходят метры, большой функционал. При этом программа выполнена на Qt, высокоуровневом фреймворке на C++, тем не менее результат много лучше, чем простая программка на Java.

Вопрос: Сколько таких Java программ можно одновременно запустить на своем PC? ясно дело что в 10 раз меньше. Очень печально.
PM MAIL ICQ   Вверх
Maksym
Дата 17.2.2008, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

Репутация: 14
Всего: 62



Platon
Тенденция -- аппаратные ресурсы дешевеют, сложность софта растет. Java предлагает большие возможности для создания архитектурно-стройных решений за счет меньшей эффективности использования аппаратных ресурсов.
Точно такое же сравнение как ты привел для Java vs Object Pascal можно сделать для пары Object Pascal vs Asm. Как только сложность превосходит некий порог употреблять Asm становится нерационально и выгоднее начинать жертвовать ресурсы переходя на новый уровень абстракции.
Если речь идет о мессанджере типа QIP, то порог еще не преодолен и Java действительно невыгодна в соотношении (усилия на разработку)/(расход аппаратных ресурсов), потому как усилия приблизительно равны, а расход ресурсов нет. Но когда сложность софта велика и достигает промышленного уровня -- необходим переход на следующий уровень абстракции, чтобы мозги программистов могли охватить систему и при этом не перегореть  smile 
Так что не так все и печально.
В названых факторах не упомянута финансовая составляющая, а ведь она тоже участвует в этом уравнении, причем на первом месте. Стоимость разработки понижается при использовании высокоуровневых средств, и понижается значительно быстрее, чем растут аппаратные запросы софта.

Это сообщение отредактировал(а) Maksym - 17.2.2008, 13:35
PM MAIL   Вверх
Platon
Дата 17.2.2008, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: 16
Всего: 40



Цитата(Maksym @  17.2.2008,  14:33 Найти цитируемый пост)
и достигает промышленного уровня

Вот, это мне больше всего не нравится. Т.е. Java + десктоп маст дай?

PM MAIL ICQ   Вверх
LSD
Дата 17.2.2008, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(Platon @  17.2.2008,  12:28 Найти цитируемый пост)
Вопрос: Сколько таких Java программ можно одновременно запустить на своем PC? ясно дело что в 10 раз меньше. Очень печально.

50 экземпляров qip бывает нужно крайне редко smile 


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Platon
Дата 17.2.2008, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: 16
Всего: 40



LSD, я же не о именно кипах говорю, а, вообще, о полноценном обмундировании ПК Java ПО.
Я соглашусь что 6-я версия сделала многое для десктопа, надеюсь что 7-я версия откроет нам новые горизонты!
PM MAIL ICQ   Вверх
Maksym
Дата 17.2.2008, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

Репутация: 14
Всего: 62



Platon
Ну так 4 гига памяти на десктопе уже становятся нормой. Java сейчас лишь немного опережает события
PM MAIL   Вверх
Platon
Дата 17.2.2008, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: 16
Всего: 40



Не знаю у кого как, а у меня на ноуте 1 гиг, на ПК было 256м, с недавних пор 768м.
PM MAIL ICQ   Вверх
Bozo
Дата 17.2.2008, 16:58 (ссылка)    | (голосов:5) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 5.4.2006

Репутация: нет
Всего: нет



smile 
Цитата
Еще меня расстраивает размеры программы в памяти! Простая программка-чат с возможностью предачи файлов и сообщений, занимает 50 М, тогда как полноценная программка, к примеру QIP занимает всего 5(!)М. Согласитесь, программисту, пишущему на Object Pascal (qip написан на нем) спокойно можно быть минимум в 10 раз криворучей, чем Java программисту!

Возьмем к примеру браузер Opera : средний размер программы в памяти 20-30М, при этом ясно куда уходят метры, большой функционал. При этом программа выполнена на Qt, высокоуровневом фреймворке на C++, тем не менее результат много лучше, чем простая программка на Java.

Вопрос: Сколько таких Java программ можно одновременно запустить на своем PC? ясно дело что в 10 раз меньше. Очень печально. 
 smile  Ура! Ты молодец. Срочно позвони в Гугле Сергею и скажи, чтобы они одумались, пока еще не поздно! Простой русский парень спасйод Гугл от банкротства! Так и вижу весь интернет, бурлящий в обсуждении этой новости. Надо срочно убедить их, чтобы они писали программы на Object Pascal для своего гуглофона aka Android. А то ведь что удумали, собираются на телефон жабу впихнуть и все программы писать на ней, а не телефоне никогда не будет 4Гб оперативной памяти, как на десктопе. И максимум что смогут покупатели этого телефона это запустить список контактов и GoogleMaps на этом телефоне, и всйо smile . А дальше память кончится, жаба съесд smile 
PM   Вверх
Platon
Дата 17.2.2008, 17:56 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: 16
Всего: 40



-1
Вовсе даже не смешно. Здесь не место для насмешек, а место для рассеивания сомнений.
PM MAIL ICQ   Вверх
Bozo
Дата 17.2.2008, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 5.4.2006

Репутация: нет
Всего: нет



Platon, сомнений в чем? Скажи, ты думаешь, в Гугл работают идиоты? И именно поэтому они выбрали Java, хотя правильнее и выгоднее было бы писать ПО под мобильник на Object Pascal? А может быть Object Pascal чья-то собственность и все, кто пишет на нем программы, должны кому-то %? Вот этого я не знаю, вполне возможно чьи-то хитрозагребущие руки хотят копейку с каждой строки кода, написанного на Object Pascal, и тогда никаких сомнений не будет, на нем смело можно ставить крест.
PM   Вверх
Kangaroo
Дата 17.2.2008, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 21
Всего: 104



Bozo
свои мысли надо выкладывать спокойно и аргументировано, а не сатиристическо-невнятным-неформатированным набором букф.

По сабжу Maksym хорошо написал, где-то так я себе ситуацию и представлял )


--------------------
Lost....
PM MAIL MSN   Вверх
nornad
Дата 18.2.2008, 03:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



Цитата(Platon @  17.2.2008,  17:20 Найти цитируемый пост)
Т.е. Java + десктоп маст дай?

Хм... а что есть десктоп? Машина/железо или среда окружения? Если второе, то в качестве примера можно рассмотреть явно десктопное приложение IntelliJ IDEA. Я пока не видел другого настолько же удобного редактора. Особенно это касается C++/Object Pascal. Навороченных - уйма. Удобных - не видел. Эклипс мне не нравится - мне он неудобен. Но у него тоже есть немало поклонников именно в плане удобства. Но давай вспомним, что и он писан на Java. И что же нам остаётся? Остаётся признать, что эти предложения достаточно сложны, чтобы перейти упомянутый порог. Теоретически написать их можно на любом языке (ну, со своей спецификой, конечно). Но почему-то IDEA и Eclipse уже существуют несколько лет, а подобного для того же С++ до сих пор не появилось. Visual C++?.. Не... она на порядок-два отстаёт по добству.  smile 
Цитата(Bozo @  17.2.2008,  19:58 Найти цитируемый пост)
Надо срочно убедить их, чтобы они писали программы на Object Pascal для своего гуглофона aka Android. А то ведь что удумали, собираются на телефон жабу впихнуть и все программы писать на ней, а не телефоне никогда не будет 4Гб оперативной памяти, как на десктопе.

а) 4 Гб на телефонах (или чём-то, что будет выполнять их функции) будет и явно ещё при нашей жизни
б) все программы гугль на джаве под андроид писать не будет точно. Андроид - линукс, а значит часть программ будет на С. Потому что так оно лучше/проще/удобнее/надёжнее. Большинство - да, на джаве. Потому что сторонним разработчикам-одиночкам это удобнее. Но пока что джава-приложения на телефонах приживаются плохо. В первую очередь из-за того, что разные производители делают свои реализации свинга под телефоны, из-за чего становится неудобно делать приложение, которое работает везде - оно либо убогое, либо тянет кучу лишнего кода.
И я бы попросил высказываться попроще, без резких наездов. Платон мне друг, но истина дороже. Его я знаю более или менее, а вы, уважаемый, здесь только появились. В общем, не стоит начинать знакомство с резкости.

Kangaroo - одобрямс. smile


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
Platon
Дата 18.2.2008, 09:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: 16
Всего: 40



Цитата(nornad @  18.2.2008,  04:55 Найти цитируемый пост)
Но почему-то IDEA и Eclipse уже существуют несколько лет, а подобного для того же С++ до сих пор не появилось. Visual C++?

Могу связать это лишь с тем, что код C++ тянется с давних времен, уровень ОО мышления был не так остр как сейчас, и на железки смотрели по-другому, и видимо разработчикам лень менять ядро программы. Приведу доругой пример софта Компании-разработчика IDEA: JetBrains Omea Pro 2.2. Выполнена на ЯВУ(предположительно C++) вещь радует своей гибкостью - работать удобно и быстро.

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


Цитата(Bozo @  17.2.2008,  20:40 Найти цитируемый пост)
Platon, сомнений в чем?

сомнений эффективности технологии.


Цитата(Bozo @  17.2.2008,  20:40 Найти цитируемый пост)
Скажи, ты думаешь, в Гугл работают идиоты? И именно поэтому они выбрали Java

Гениальный шовинистический аргумент. 

PM MAIL ICQ   Вверх
Bozo
Дата 18.2.2008, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 5.4.2006

Репутация: нет
Всего: нет



Цитата(Platon @ 18.2.2008,  09:11)
Выполнена на ЯВУ(предположительно C++) вещь радует своей гибкостью - работать удобно и быстро.

Она на C#. В нее они вложили опыт, накопленный с Resharper и IDEA.

На остальное отвечать - нарываться на замечания и бан.  smile 
PM   Вверх
LSD
Дата 19.2.2008, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(nornad @  18.2.2008,  03:55 Найти цитируемый пост)
значит часть программ будет на С. Потому что так оно лучше/проще/удобнее/надёжнее

Крайнеспорный аргумент.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
nornad
Дата 19.2.2008, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



Аргумент - да, спорный. Но часть программ на сях точно там будет. Большей частью тех, где сложность не слишком высока (хотя, откуда сегодня на сотке очень сложные программы?).


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
Bozo
Дата 19.2.2008, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 5.4.2006

Репутация: нет
Всего: нет



Цитата

все программы гугль на джаве под андроид писать не будет точно. Андроид - линукс, а значит часть программ будет на С. Потому что так оно лучше/проще/удобнее/надёжнее. Большинство - да, на джаве.
http://www.linux.org.ru/view-message.jsp?msgid=2500357#2501958 
Цитата
, плюс мощная надстройка над стандартной Java, собственно Android SDK
 где там таки место для "программ на C", риторический вопрос
PM   Вверх
LSD
Дата 20.2.2008, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Android еще не вышел, и пока нет гарантий что выйдет. Google свою ОС тоже хотел сделать, хотел-хотел - да передумал.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
batigoal
Дата 20.2.2008, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 24
Всего: 151



Цитата(LSD @  20.2.2008,  13:18 Найти цитируемый пост)
Android еще не вышел

Девайсы уже демонстрировались.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Страницы: (18) [Все] 1 2 3 ... Последняя »
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.5657 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.