Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Медленнее, чем на C / 20 сообщений из 20, страница 1 из 1
15.11.2007, 23:03:43
    #34943434
Born in U.S.S.R.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленнее, чем на C
Средняя прога на Java отработает также в среднем на 20% медленней аналогичной на C.
Не на 20%, а в 4-8 раз медленнее. http://no-gritzko-here.livejournal.com/3725.html
...
Рейтинг: 0 / 0
15.11.2007, 23:14:24
    #34943447
Kachalov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленнее, чем на C
- постарайтесь не писать "средних" программ
...
Рейтинг: 0 / 0
15.11.2007, 23:22:00
    #34943458
Софтверный проктолог
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленнее, чем на C
Этот код в исполнении автора — полное говно. Так писать нельзя:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
 import  java.util.*;

 class  Sorted {

 static   int  SIZE =  1000000 ;

 public   static   void  main (String [] args) {

String [] init =  new  String[SIZE];

 for  ( int  i= 0 ; i<SIZE; i++) {
	init[i] = "s" + i% 100  + (i+ 17 )% 37  + i;
}

System.out.println("init OK");

SortedSet<String> set =  new  TreeSet<String>();
 for  ( int  i= 0 ; i<SIZE; i++)
	set.add(init[i]);

System.out.println("add OK");

 for  (String s : set)
	 if  (s.startsWith("z") || s.charAt( 1 )=='f')
		System.err.println("ALARM!");

System.out.println("all OK");

}

}
...
Рейтинг: 0 / 0
15.11.2007, 23:23:04
    #34943462
Софтверный проктолог
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленнее, чем на C
Это не говоря уже о том, как замеряется время выполнения.

Рекомендую не верить проходимцам из LJ. Обманут, даже сами будучи уверены в своей правоте.
...
Рейтинг: 0 / 0
16.11.2007, 11:24:40
    #34944165
NotGonnaGetUs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленнее, чем на C
Софтверный проктологЭтот код в исполнении автора — полное говно. Так писать нельзя:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
 import  java.util.*;

 class  Sorted {

 static   int  SIZE =  1000000 ;

 public   static   void  main (String [] args) {

String [] init =  new  String[SIZE];

 for  ( int  i= 0 ; i<SIZE; i++) {
	init[i] = "s" + i% 100  + (i+ 17 )% 37  + i;
}

System.out.println("init OK");

SortedSet<String> set =  new  TreeSet<String>();
 for  ( int  i= 0 ; i<SIZE; i++)
	set.add(init[i]);

System.out.println("add OK");

 for  (String s : set)
	 if  (s.startsWith("z") || s.charAt( 1 )=='f')
		System.err.println("ALARM!");

System.out.println("all OK");

}

}


А как можно? :) Тут только один минус - s.startsWith("z") - остальное в приделах нормы.

Второе решение на С выигрывает из-за того, что в нём сравниваются другие строки, без "+ i" в конце, что делает их существенно короче (а значит проще считать хешкод и т.д.).

Аналогичное исправление в java коде приводит к его ускорению в 5.5 раз и позвращает паритет :)
...
Рейтинг: 0 / 0
16.11.2007, 11:31:50
    #34944198
Софтверный проктолог
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленнее, чем на C
NotGonnaGetUs
А как можно? :) Тут только один минус - s.startsWith("z") - остальное в приделах нормы.

Второе решение на С выигрывает из-за того, что в нём сравниваются другие строки, без "+ i" в конце, что делает их существенно короче (а значит проще считать хешкод и т.д.).

Аналогичное исправление в java коде приводит к его ускорению в 5.5 раз и позвращает паритет :)
А еще отказаться от TreeSet и написать
Код: plaintext
1.
2.
3.
4.
5.
Arrays.sort(init);

Set<String> set =  new  HashSet<String>(SIZE);
 for  ( int  i =  0 ; i < SIZE; i++)
	set.add(init[i]);
+ 30%
...
Рейтинг: 0 / 0
16.11.2007, 12:52:41
    #34944668
NotGonnaGetUs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленнее, чем на C
Софтверный проктологА еще отказаться от TreeSet и написать
Код: plaintext
1.
2.
3.
4.
5.
Arrays.sort(init);

Set<String> set =  new  HashSet<String>(SIZE);
 for  ( int  i =  0 ; i < SIZE; i++)
	set.add(init[i]);
+ 30%

Идея была в сравнении вставки в сортированный set (те самые красно-чёрные деревья) на java и с++.

Менять алгоритм нельзя. А то ведь с++ вариант тоже сменит алгоритм :)

Хотя твой вариант даже не эквивалентен исходному, т.к. в set все строки опять перемешаются...
...
Рейтинг: 0 / 0
16.11.2007, 12:59:07
    #34944693
NotGonnaGetUs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленнее, чем на C
Софтверный проктологА еще отказаться от TreeSet и написать
Код: plaintext
1.
2.
3.
4.
5.
Arrays.sort(init);

Set<String> set =  new  HashSet<String>(SIZE);
 for  ( int  i =  0 ; i < SIZE; i++)
	set.add(init[i]);
+ 30%


Кстати, этот вариант оказывается в 2.5 раза медленнее, чем исходный с TreeSet, если откинуть i на конце собираемых строк. Правда удивительный результат? :)
...
Рейтинг: 0 / 0
16.11.2007, 12:59:12
    #34944695
Софтверный проктолог
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленнее, чем на C
NotGonnaGetUs
Идея была в сравнении вставки в сортированный set (те самые красно-чёрные деревья) на java и с++.

Менять алгоритм нельзя. А то ведь с++ вариант тоже сменит алгоритм :)

Хотя твой вариант даже не эквивалентен исходному, т.к. в set все строки опять перемешаются...
Я не написал LinkedHashSet? Наверное, все и так поняли :)

Что касается скорости вставки — может таки померяем только её в таком случае?
...
Рейтинг: 0 / 0
16.11.2007, 13:04:21
    #34944715
Софтверный проктолог
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленнее, чем на C
NotGonnaGetUs
Кстати, этот вариант оказывается в 2.5 раза медленнее, чем исходный с TreeSet, если откинуть i на конце собираемых строк. Правда удивительный результат? :)
Этот вариант я просто не проверял.
...
Рейтинг: 0 / 0
16.11.2007, 13:18:52
    #34944788
Человек-собака Шариков
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленнее, чем на C
отстойный тест. Предлагаю другой:

нарисовать формочку с табличкой, в табличке две колонки "Имя" и "Фамилия". По щелчку заголовка табличка сортируется по имени или фамилии. Записей пусть будет миллион. Вполне реальная задача.

а эти арраи ни о чём не говорят, ерунда какая-то.
...
Рейтинг: 0 / 0
16.11.2007, 13:24:24
    #34944817
Софтверный проктолог
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленнее, чем на C
Человек-собака Шариков
нарисовать формочку с табличкой, в табличке две колонки "Имя" и "Фамилия". По щелчку заголовка табличка сортируется по имени или фамилии. Записей пусть будет миллион . Вполне реальная задача .
Это такая же реальная задача, как и в топикстартере.
...
Рейтинг: 0 / 0
16.11.2007, 13:39:51
    #34944910
NotGonnaGetUs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленнее, чем на C
Человек-собака Шариковотстойный тест. Предлагаю другой:

нарисовать формочку с табличкой, в табличке две колонки "Имя" и "Фамилия". По щелчку заголовка табличка сортируется по имени или фамилии. Записей пусть будет миллион. Вполне реальная задача.

а эти арраи ни о чём не говорят, ерунда какая-то.

В самом деле? А где предлагаешь хранить данные для этой таблички? В базе или всё-таки в арраях? :)

Если в базе, то при чём тут языки? Sql запросы-то будут одинаковые и скорость будет зависить только о времени их исполнения.

Если локально в aрраях - то чем эта задача отличается от тестовой? :)
...
Рейтинг: 0 / 0
16.11.2007, 13:43:35
    #34944934
Человек-собака Шариков
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленнее, чем на C
данные можно хранить где угодно. Понятно что в склсервере надо хранить хотя кто как хочет. Для реализму можно добавить колонку с суммами, типа это список членских взносов во всесоюзном обществе филателистов.
...
Рейтинг: 0 / 0
16.11.2007, 13:53:09
    #34944976
NotGonnaGetUs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленнее, чем на C
Человек-собака Шариковданные можно хранить где угодно. Понятно что в склсервере надо хранить хотя кто как хочет. Для реализму можно добавить колонку с суммами, типа это список членских взносов во всесоюзном обществе филателистов.

Брр... Погоди.
Цель (довольно сомнительная) теста была в замере скорости работы одного и того же алгоритма написанного на разных языках.

Поэтому ты должен не говорить - можно так, а можно этак - а предоставить полное ТЗ:
- что должна делать программа
- какие будут использованны алгоритмы

Либо предложить референсную имплементацию на одном из языков, по которой можно будет восстановить тз.

Пока этого не случилось, можно утверждать, что никакого теста ты не предложил вообще и занимаешься не продуктивным дуплением клавиатуры :)

Я это к тому говорю, что если ты доведёшь постановку доконца, то увидишь, что всё сведётся к алгоритмам на тех же самых массивах.
...
Рейтинг: 0 / 0
16.11.2007, 14:12:37
    #34945066
Человек-собака Шариков
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленнее, чем на C
авторЦель (довольно сомнительная)

и что показывает этот тест? Что жаба медленнее чем Ц. Применительно к чему? Да ко всему, хоть в газете пропечатай.

Что покажет мой тест? То что в реальных приложениях (а учётные системы это основная масса приложений) жаба будет работать так же как и любое другое приложение. Если конечно на Ц вообще получится решить такую непосильную задачу как вывод в формочку большого количества записей.
...
Рейтинг: 0 / 0
16.11.2007, 15:08:26
    #34945308
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленнее, чем на C
Born in U.S.S.R. Средняя прога на Java отработает также в среднем на 20% медленней аналогичной на C.
Не на 20%, а в 4-8 раз медленнее. http://no-gritzko-here.livejournal.com/3725.html
Погугли на тему Java Faster than C++. Найдешь тесты показывающее обратное. То что тестирует приведенный тест вообще никак не похоже на то что обычно отнимает процессорное время в Enterprise приложениях.
GC надо тестировать. ORM. И прочую ресурсоёмкую туфту.
...
Рейтинг: 0 / 0
16.11.2007, 17:49:37
    #34946014
NotGonnaGetUs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленнее, чем на C
Человек-собака Шариков авторЦель (довольно сомнительная)

и что показывает этот тест? Что жаба медленнее чем Ц. Применительно к чему? Да ко всему, хоть в газете пропечатай.

Что покажет мой тест? То что в реальных приложениях (а учётные системы это основная масса приложений) жаба будет работать так же как и любое другое приложение. Если конечно на Ц вообще получится решить такую непосильную задачу как вывод в формочку большого количества записей.

Тест показывает, что реализации TreeSort на java и Set на c++ работают примерно с одинаковой скоростью. И всё.

Твой тест, если ты его всё-таки сформулируешь и дело дойдёт до сравнения, покажет скорее всего тоже самое - разница в скорости будет ~20%.

Подобные тесты служат обычно не для того, чтобы показать, что с++ быстрее java, а чтобы убедиться, что это отстование не критично :)
...
Рейтинг: 0 / 0
16.11.2007, 17:56:48
    #34946038
324234
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленнее, чем на C
Born in U.S.S.R. Средняя прога на Java отработает также в среднем на 20% медленней аналогичной на C.
Не на 20%, а в 4-8 раз медленнее. http://no-gritzko-here.livejournal.com/3725.html
Офигеть, ну надо же. А я то думал, что APAB самый быстрый язык, после него ява, а только потом С.
...
Рейтинг: 0 / 0
16.11.2007, 18:11:33
    #34946090
Человек-собака Шариков
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленнее, чем на C
авторТвой тест, если ты его всё-таки сформулируешь и дело дойдёт до сравнения, покажет скорее всего тоже самое - разница в скорости будет ~20%.

вряд ли. Думаю что и в 200% может быть в любую сторону. Смотря как делать.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Медленнее, чем на C / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]