Что, господа суровые С++ программисты, поспорим быстродействием с отстойной Джавой? ;)

 
1 2 3 4 5 6 7 29
US Сергей-4030 #06.02.2008 21:35
+
-
edit
 

Сергей-4030

исключающий третье
★☆
админ. бан
В общем, я тут пооптимизировал свою программу 8 ферзей. На Джаве, естественно. Джава 1.6, компьютер:

Intel(R) Core(TM)2 Duo CPU
T7100 @ 1.80GHz
789 MHz, 1.99 GB of RAM

Веду поиск для доски 16x16 (соответственно, 16 ферзей расставляем). Все дублированные решения (повороты, зеркальные отражения) - детектируем и не включаем в результат. Вот вывод моей программки:

code text
  1. 16 queens.
  2. Started at:Wed Feb 06 13:22:42 EST 2008
  3. Finished at:Wed Feb 06 13:31:10 EST 2008, after 508484 ms.
  4. 1846955 solutions found.


Слабо крутым С/С++ программистом забить производительностью тормозную Джаву? ;) Если кто рискнет - публикуйте результаты, потом в час X все вместе опубликуем исходники - все вместе для того, чтоб не было воровства идей. ;)

PS Не забудем: повороты, вращения etc - исключаем!
 
Это сообщение редактировалось 06.02.2008 в 22:41
US Сергей-4030 #06.02.2008 22:32
+
-
edit
 

Сергей-4030

исключающий третье
★☆
админ. бан
Чуть подправил параметры запуска, теперь:

code text
  1. Started at:Wed Feb 06 14:11:41 EST 2008
  2. Finished at:Wed Feb 06 14:18:39 EST 2008, after 418078 ms.
  3. 1846955 solutions found.
 
US Сергей-4030 #06.02.2008 22:37
+
-
edit
 

Сергей-4030

исключающий третье
★☆
админ. бан
Что интересно, на описанной конфигурации исполнение в одном потоке (второе ядро почти не нагружено в таком разе) дает:

code text
  1. 16 queens.
  2. Started at:Wed Feb 06 14:24:52 EST 2008
  3. Finished at:Wed Feb 06 14:35:04 EST 2008, after 611703 ms.
  4. 1846955 solutions found.


Оверхед потоков, к сожалению, постоянно вносит свою лепту... :(
 
RU Balancer #06.02.2008 23:04  @Сергей-4030#06.02.2008 21:35
+
-
edit
 

Balancer

администратор
★★★★☆
Сергей-4030> потом в час X все вместе опубликуем исходники - все вместе для того, чтоб не было воровства идей. ;)

Так это сравнение не языков будет, а программистов.
 
US Сергей-4030 #06.02.2008 23:12  @Balancer#06.02.2008 23:04
+
-
edit
 

Сергей-4030

исключающий третье
★☆
админ. бан
Сергей-4030>> потом в час X все вместе опубликуем исходники - все вместе для того, чтоб не было воровства идей. ;)
Balancer> Так это сравнение не языков будет, а программистов.

Язык безусловно влияет на дизайн. Вот и посмотрим, как на кого повлиял. ;) Наберется человек пять хотя бы - можно и статистику вести...
 
+
-
edit
 

Balancer

администратор
★★★★☆
Меня точно скоро не ждите, во-первых, абстрактные задачи решать у меня время появится вряд ли быстрее, чем через месяц, во-вторых, я задачу уж точно на Си++ решать не буду, давно завязал :D Как раз в этой паре предпочёл бы Java. Даже не смотря на её чудовищный оверхед на доступе к наследуемым методам и необычайную обжорчивость по памяти.

...

А вот со временем - интересно было бы попробовать D. Но сперва надо будет его изучить :)
 
IL TheFreeMan #06.02.2008 23:33
+
-
edit
 

TheFreeMan

втянувшийся

Некорректное сравнение будет, надо на одной машине компилировать(с включенной оптимизатцией под процессор) и проверять.
И в этом случае Java - sucks. :-)
Вот, лучше сами проверьте : http://www.ida.liu.se/~chrke/fork95/aqueens.c
Кста, и это решение я могу немного оптимизировать
 

Murkt

Pythoneer

Та, эт фигня. А вот когда Питон быстрее, чем С... :)
[team Їжачки - сумні падлюки]  
US Сергей-4030 #06.02.2008 23:45  @Balancer#06.02.2008 23:15
+
-
edit
 

Сергей-4030

исключающий третье
★☆
админ. бан
Balancer> Меня точно скоро не ждите, во-первых, абстрактные задачи решать у меня время появится вряд ли быстрее, чем через месяц, во-вторых, я задачу уж точно на Си++ решать не буду, давно завязал :D Как раз в этой паре предпочёл бы Java. Даже не смотря на её чудовищный оверхед на доступе к наследуемым методам и необычайную обжорчивость по памяти.
Balancer> ...
Balancer> А вот со временем - интересно было бы попробовать D. Но сперва надо будет его изучить :)

Ну, это мелкая задачка, на полчаса. Зарядка для ума. Кроме того, в данном случае ее обжорчивость особого значения не имеет.
 
IL TheFreeMan #06.02.2008 23:47
+
-
edit
 

TheFreeMan

втянувшийся

Start: Wed Feb 06 22:41:57 2008
End: Wed Feb 06 22:42:09 2008
Calculations took 12 seconds.
For board size 16, 14772512 solutions found.

P.S. Pentium4 3GHz
 
US Сергей-4030 #06.02.2008 23:52  @TheFreeMan#06.02.2008 23:33
+
-
edit
 

Сергей-4030

исключающий третье
★☆
админ. бан
TheFreeMan> Некорректное сравнение будет, надо на одной машине компилировать(с включенной оптимизатцией под процессор) и проверять.
TheFreeMan> И в этом случае Java - sucks. :-)
TheFreeMan> Вот, лучше сами проверьте : http://www.ida.liu.se/~chrke/fork95/aqueens.c
TheFreeMan> Кста, и это решение я могу немного оптимизировать

Ну так с исходниками - каждый на одной (своей) и выполнит.

ЗЫ Приведенное решение - туфта. Оно НЕ выполняет поиск вращений/отражений. А это, собственно, главная тонкость в данном случае.

ЗЗЫ Прикольно, господа. Развлекитесь. Это совсем маленькая программка (у меня получилось три файла по 191, 116 и 88 строк соотвественно, включая печать, разбор командной строки и т.п), а сколько удовольствия! ;)
 
US Сергей-4030 #06.02.2008 23:53  @TheFreeMan#06.02.2008 23:47
+
-
edit
 

Сергей-4030

исключающий третье
★☆
админ. бан
TheFreeMan> Start: Wed Feb 06 22:41:57 2008
TheFreeMan> End: Wed Feb 06 22:42:09 2008
TheFreeMan> Calculations took 12 seconds.
TheFreeMan> For board size 16, 14772512 solutions found.
TheFreeMan> P.S. Pentium4 3GHz

Туфта. Поиск вращений-отражений пропущен. Замечаешь, что у тебя 14 млн решений, а у меня - меньше двух?
 
+
-
edit
 

Mishka

модератор
★★☆
Закрою своих пару ишьюсов, если новых не будет, то поучаствую.
 
US Сергей-4030 #09.02.2008 17:12
+
-
edit
 

Сергей-4030

исключающий третье
★☆
админ. бан
Еще пооптимизировал, теперь:

code text
  1. 16 queens.
  2. Started at:Sat Feb 09 09:08:29 EST 2008
  3. Finished at:Sat Feb 09 09:10:39 EST 2008, after 129937 ms.
  4. 1846955 solutions found.


Компьютер:
Прикреплённые файлы:
comp.PNG (скачать) [3,18 кбайт, 41 загрузка] [attach=88068]
 
 
 
+
-
edit
 

Eretik

втянувшийся

В каком виде ваша программа исполняется? Байт-код?

Дело не в том, что Ява тормозная. Дело в том, что Ява - кривая. Усеченный С++ с парой полезных вещей да еще и без хорошего оптимизируещего компилера мне ни разу не нужен. Кроссплатформ мы С-кодом обеспечиваем.
Хотя, кусочек(интерфейс), видимо, напишу в Яве - у нас каждый первый тестер заявил себя спецом по Яве.
 
+
-
edit
 

Balancer

администратор
★★★★☆
/me с интересом запасается поп-корном :D
 
+
-
edit
 

Murkt

Pythoneer

Balancer> /me с интересом запасается поп-корном :D
Думаешь, он понадобится? :) Тогда я тоже запасаюсь :)
[team Їжачки - сумні падлюки]  
US Сергей-4030 #12.05.2008 18:07  @Eretik#12.05.2008 11:22
+
-
edit
 

Сергей-4030

исключающий третье
★☆
админ. бан
Eretik> В каком виде ваша программа исполняется? Байт-код?

Разумеется, как еще?

Eretik> Дело не в том, что Ява тормозная. Дело в том, что Ява - кривая. Усеченный С++ с парой полезных вещей да еще и без хорошего оптимизируещего компилера мне ни разу не нужен. Кроссплатформ мы С-кодом обеспечиваем.

Дело в том, что я про С++ по большому счету только слыхал название, потому и предположил самонадеянно (из статей желтой прессы), что Джава имеет какие-то там преимущества.

Eretik> Хотя, кусочек(интерфейс), видимо, напишу в Яве - у нас каждый первый тестер заявил себя спецом по Яве.

Так все же, программа-то будет, или нет? :) Давайте уже в конце концов покажите, как С++ сделает Джаву на предложенной задачке! У меня заняло около двух часов написание, у вас, наверное, еще меньше займет - поскольку вы человек опытный, да и писать вам придется не на кривой Джаве а на красивом и эффективном С++. Давайте, напишите - а через часик посравниваем и посмеемся над кривой Джавой.
 
+
-
edit
 

Balancer

администратор
★★★★☆
Balancer>> /me с интересом запасается поп-корном :D
Murkt> Думаешь, он понадобится? :) Тогда я тоже запасаюсь :)

Что, неужели никто сказанный бред развенчать не возьмётся? Ну, это даже скучно... :)
 
US Сергей-4030 #12.05.2008 18:29  @Balancer#12.05.2008 18:09
+
-
edit
 

Сергей-4030

исключающий третье
★☆
админ. бан
Balancer>>> /me с интересом запасается поп-корном :D
Murkt>> Думаешь, он понадобится? :) Тогда я тоже запасаюсь :)
Balancer> Что, неужели никто сказанный бред развенчать не возьмётся? Ну, это даже скучно... :)

Похоже, всуе... красивый и эффективный С++ в настоящее время занят другими, более важными задачами, недосуг ему выделить минуток двадцать на то, чтоб показать Джаве, как надо работать. :(
 
US Сергей-4030 #12.05.2008 18:37
+
-
edit
 

Сергей-4030

исключающий третье
★☆
админ. бан
Может быть кто уже и попробовал и обнаружил, что С++ с задачкой справляется не ахти. ;) На самом деле, при решении "в лоб" на 16 ферзях объективно будут не секунды, а годы расчета. А вот в Джаве правильное решение куда как легче реализовать, ибо environment подразумевает именно правильный подход. ;)

ЗЫ Хотя, конечно, если сделать "правильную" имплементацию для С++, то наверняка на сколько-то она обгонит Джаву. Если использовать векторную арифметику - то, наверное, в разы обгонит.
 
+
-
edit
 

Murkt

Pythoneer

Murkt>> Думаешь, он понадобится? :) Тогда я тоже запасаюсь :)
Balancer> Что, неужели никто сказанный бред развенчать не возьмётся? Ну, это даже скучно... :)
Ну я вон попытался развенчать бред от Kernel3 про системы контроля версий, так он на меня обиделся и минус мне в репутацию влепил :F
[team Їжачки - сумні падлюки]  
DE Eretik #12.05.2008 23:58  @Сергей-4030#12.05.2008 18:07
+
-
edit
 

Eretik

втянувшийся

Eretik>> В каком виде ваша программа исполняется? Байт-код?
Сергей-4030> Разумеется, как еще?
Тогда можете смело сливаться.

Сергей-4030> Дело в том, что я про С++ по большому счету только слыхал название, потому и предположил самонадеянно (из статей желтой прессы), что Джава имеет какие-то там преимущества.
Имеет. Но эти преимущества не в быстродействии. Я прекрасно помню, как рождалась Ява. Один из моих сотрудников переквалифицировался в Ява-программеры.

Eretik>> Хотя, кусочек(интерфейс), видимо, напишу в Яве - у нас каждый первый тестер заявил себя спецом по Яве.
Сергей-4030> Так все же, программа-то будет, или нет? :) Давайте уже в конце концов покажите, как С++ сделает Джаву на предложенной задачке! У меня заняло около двух часов написание, у вас, наверное, еще меньше займет - поскольку вы человек опытный, да и писать вам придется не на кривой Джаве а на красивом и эффективном С++. Давайте, напишите - а через часик посравниваем и посмеемся над кривой Джавой.
Даже если бы это заняло полчаса, я бы не стал писать код: когда нужно думать я становлюсь ленив. В данном случае С/С++ порвёт Джаву как Тузик грелку. Эти языки и создавались для достижения наиболее высокой эффективности машинного кода. А Ява - это интерпретатор, основной целью создания которого было достижение реальной кроссплатформенности и унификация программирования с удалением наиболее идиотских черт С++(header files в качестве описания интерфейсов, к примеру). Интерпретатор по определению не может работать быстрее, чем машинный код. И никакой разницы интерпретатор чего и компилятор чего(если у нас байткод С++ а компилер Явы я ставлю 100 против одного на Яву). На равных алгоритмах Яве делать нечего. Вот если бы байт-код разогнать в машинный, то тогда интереснее. Боюсь, что преимущество на сложных задачах было бы все-таки у С/С++, но небольшое и, возможно, уже не всегда.
 
+
-
edit
 

Balancer

администратор
★★★★☆
Eretik> А Ява - это интерпретатор

Всё-таки, попкорном я запасался не зря :D Давно я уже не встречал людей, путающих разного рода трансляторы на таком уровне :)
 
+
-
edit
 

Murkt

Pythoneer

Eretik>> А Ява - это интерпретатор
Balancer> Всё-таки, попкорном я запасался не зря :D
Да, ты был прав :)
[team Їжачки - сумні падлюки]  
Это сообщение редактировалось 13.05.2008 в 00:27
1 2 3 4 5 6 7 29

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru