Полезное для программистов:

Фриланс
Новости
Статьи
   
Рубрики:

Error. Page cannot be displayed. Please contact your service provider for more details. (18)


Медленная JAVA - а так ли это?

Поиск:
Спасибо большое Domestic Cat за предоставленную информацию


Уже не один раз встречалась информация о том, что при вычислениях JAVA практически сравнима по скорости с Си. 
http://www.idiom.com/~zilla/Computer/javaCbenchmark.html
http://soft.compulenta.ru/2004/6/17/47645/?ref=left
http://kano.net/javabench/

Вот и Domestic Cat провел исследования.

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

Код

// 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
 
 Добавлено @ [mergetime]1087829422[/mergetime] 
 Повторил тест, только усреднил время по 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


:) :) :D
Автор: AntonSaburov
Сайт: http://






Просмотров: 4529

 

 

Новые статьи:


Популярные:
  1. Как сделать цикличным проигрывание MIDI-файла?
  2. Создание AVI файла из рисунков
  3. Как устройство "отключить в данной конфигурации"?
  4. Kто в данный момент присоединен через Сеть?
  5. Как узнать количество доступной памяти?
  6. Как реализовать в RichEdit разноцветный текст?
  7. Как скрыть свое приложение от ProcessViewer
  8. Как программно нажать/скрыть/показ кнопку "Start"?
  9. Модуль работы с ресурсами в PE файлах
10. Функции вызова диалоговых окон выбора
11. Проверка граматики средствами Word'а из Delphi.
12. Модуль для упрощенного вызова сообщений
13. Функции для записи и чтение своих данных в, ЕХЕ- файле
14. Рекурсивный просмотр директорий
15. Network Traffic Monitor
16. Разные модули
17. Универсальная функция для обращения к любым экспортируем функциям DLL
18. Библиотека от VladS
19. Протектор для UPX'а
20. Еще об ICQ, сообщения по контакт листу?
21. Использование открытых интерфейсов
22. Теория и практика использования RTTI
23. Работа с TApplication
24. Примеры использования Drag and Drop для различных визуальных компонентов
25. Что такое порт? Правила для работы с портами
26. Симфония на клавиатуре
27. Загрузка DLL
28. Исправление автоинкремента
29. Взаимодействие с чужими окнами
30. Проверить дубляжи в столбце


 

 

 
 
На главную