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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Очередные данные о "медленности" JAVA 
:(
    Опции темы
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   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

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

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


 




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


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

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