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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Очередные данные о "медленности" JAVA 
:(
    Опции темы
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   Вверх
LSD
Дата 20.2.2008, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


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

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



Цитата(batigoal @  20.2.2008,  16:09 Найти цитируемый пост)
Девайсы уже демонстрировались.

Так и ОС существует (и продолжает развиваться до сих пор), но проект-то они забросили.

Тем более, что они просят не ассоциировать андроид с брендом гугла.


--------------------
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   Вверх
Maksym
Дата 21.2.2008, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

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



[offtopic]LSD, что за ОС, где почитать?[/offtopic]


Это сообщение отредактировал(а) Maksym - 21.2.2008, 15:32
PM MAIL   Вверх
devmstr
Дата 21.2.2008, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Developer
**


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

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



Maksym
лови android


--------------------
Think different ©Steve Jobs 
user posted image
PM MAIL WWW   Вверх
LSD
Дата 22.2.2008, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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   Вверх
Maksym
Дата 22.2.2008, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

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



Цитата(devmstr @  21.2.2008,  14:40 Найти цитируемый пост)
Maksym, лови android 

Сенк, андроид я в курсе. Гугловскую десктопную ось имел в виду.
Цитата(LSD @  22.2.2008,  11:42 Найти цитируемый пост)
Maksym, Haiku OS, обсуждение на Винграде. 

Спасиб.

PM MAIL   Вверх
w1nd
Дата 7.3.2008, 01:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


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

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



Всё не доходят руки самому поразбираться:

Код
#include <bitset>
#include <iostream>
#include <ctime>
#include <conio.h>

using namespace std;

int _main(int argc, char* argv[])
{
    const int N = 2000000;
    clock_t cstart = clock();
    int count;
    for(int xxx = 0;xxx<=100;xxx++)
    {
        bitset<N + 1> b;
        count = 0;
        int i;
        for(i=2;i<=N;i++)
            b.set(i);
        i=2;
        while(i*i<=N)
        {
            if(b.test(i))
            {
                count++;
                int k = 2*i;
                while(k <= N)
                {
                    b.reset(k);
                    k += i;
                }
            }
            i++;
        }

        while(i<=N)
        {
            if(b.test(i))
                count++;

            i++;
        }
    }
    clock_t cend = clock();
    double millis = 1000.0*(cend-cstart)/CLOCKS_PER_SEC;
    cout << count << " primes\n" << millis << " millisecond\n";

    getch();
    return 0;
}


Код
package test;
import java.util.*;
/**
 *
 * @author impik777
 */
public class Main {
    public static void main(String[] args) {
        int n = 2000000;
        long start = System.currentTimeMillis();
       int count = 0;
        for(int xxx = 0;xxx<=100;xxx++)
        {
            BitSet b = new BitSet(n+1);
            count = 0;
            int i;
            for(i=2;i<=n;i++)
                b.set(i);
            i=2;
            while(i*i<=n)
            {
                if(b.get(i))
                {
                    count++;
                    int k = 2*i;
                    while(k<=n)
                    {
                        b.clear(k);
                        k += i;
                    }
                }
                i++;
            }

            while (i <= n)
            {
                if(b.get(i))
                    count++;

                i++;
            }
        }
        
        long end = System.currentTimeMillis();
        System.out.println(count + " primes");
        System.out.println((end - start) + " milliseconds");  
    }
}

В приложении бинарники варианта на C++, собранные GCC и VS2005. Примеры на C++ выполняются в среднем на порядок быстрее.

Это сообщение отредактировал(а) w1nd - 7.3.2008, 09:20

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


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
Platon
Дата 7.3.2008, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

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



А вот мне интересно, на сколько ускорится ваш пример на Java если его скомпилировать с помощью gcj?
PM MAIL ICQ   Вверх
w1nd
Дата 7.3.2008, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


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

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



Цитата(Platon @  7.3.2008,  10:02 Найти цитируемый пост)
А вот мне интересно, на сколько ускорится ваш пример на Java если его скомпилировать с помощью gcj?

Нет, это как раз совсем не интересно smile Отставание на порядок в такой простой задаче - это нетипично. Интересно найти, в чём подвох.


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
w1nd
Дата 9.3.2008, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


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

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



Немного поковырялся с реализацией BitSet; в java для хранения бит в нём используются long'и, в c++ - unsigned long, ЕМНИП, в c++ это 32 бита, а не 64. Замена стандартного BitSet на свой (реализация аналогичная) даёт увеличение производительности java-примера в два раза.

Код
public class BitSet {
        
    private final int[] ints;
        
    public BitSet(int count) {
        ints = new int[(count / 32) + ((count % 32) != 0 ? 1 : 0)];
    }
        
    public boolean get(int number) {
        return (ints[(number / 32)] & (1 << (number % 32))) != 0;
    }
        
    public void set(int number) {
        ints[(number / 32)] |= (1 << (number % 32));
    }

    public void clear(int number) {
        ints[(number / 32)] &= ~(1 << (number % 32));
    }
        
}

А замена деления на более простые операции даёт почти ту же, что для примеров c++ скорость:

Код
public class BitSet {
        
    private final int[] ints;
        
    public BitSet(int count) {
        ints = new int[(count >> 5) + ((count & 0x1f) != 0 ? 1 : 0)];
    }
        
    public boolean get(int number) {
        return (ints[(number >> 5)] & (1 << (number & 0x1f))) != 0;
    }
        
    public void set(int number) {
        ints[(number >> 5)] |= (1 << (number & 0x1f));
    }

    public void clear(int number) {
        ints[(number >> 5)] &= ~(1 << (number & 0x1f));
    }
        
}

Не так давно я кому-то говорил, что использование битовых операций вместо сложения/вычитания/деления по модулю не даст никакого прироста. И это должно быть так. Но, как видите, замена деления даёт огромный прирост производительности даже на современных процессорах. Печально, но факт - не наблюдается более чем уместной оптимизации ещё на стадии компиляции.

Это сообщение отредактировал(а) w1nd - 9.3.2008, 14:41


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
Platon
Дата 9.3.2008, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

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



http://forum.vingrad.ru/index.php?showtopi...t&p=1368269
Не эта ли темка?
Надо заметить, что вы не только о сложении/вычитании говорили.

Это сообщение отредактировал(а) Platon - 9.3.2008, 14:38
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1172 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.