powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Бенчмарки C#, C++, Java, Delphi
25 сообщений из 265, страница 10 из 11
Бенчмарки C#, C++, Java, Delphi
    #34504471
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yuric74Это не предоставление готовых перестановок?
Ну так добавте это (создание зеркального массива) в ваш код и оцените время работы.
...
Рейтинг: 0 / 0
Бенчмарки C#, C++, Java, Delphi
    #34504498
Yuric74
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NotGonnaGetUs
А зачем создавать зеркальный массив? Мы же не храним все варианты перестановок. Обычно в таких задачах целью ставится вывести все варианты на экран или в файл. Эта цель достигается, что еще надо?
...
Рейтинг: 0 / 0
Бенчмарки C#, C++, Java, Delphi
    #34505034
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yuric74 NotGonnaGetUs
А зачем создавать зеркальный массив? Мы же не храним все варианты перестановок. Обычно в таких задачах целью ставится вывести все варианты на экран или в файл. Эта цель достигается, что еще надо?

Для того, чтобы вариант вывести на экран или в файл, его нужно сформировать. В каком месте предложенного кода формируются "зеркальные" перестановки? Ни в каком. А на это требуется время.
...
Рейтинг: 0 / 0
Бенчмарки C#, C++, Java, Delphi
    #34505068
Yuric74
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NotGonnaGetUsДля того, чтобы вариант вывести на экран или в файл, его нужно сформировать. В каком месте предложенного кода формируются "зеркальные" перестановки? Ни в каком. А на это требуется время.
Вы что, издеваетесь? Вариант перестановки уже в массиве. Еще раз
Код: plaintext
1.
2.
3.
4.
5.
for i:= 1  to razmer do
  write(b[i],' ');
writeln;
for i:=razmer downto  1  do
  write(b[i],' ');
writeln;
...
Рейтинг: 0 / 0
Бенчмарки C#, C++, Java, Delphi
    #34505331
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yuric74
Вы что, издеваетесь? Вариант перестановки уже в массиве. Еще раз


Ещё раз, ок, хотя это становится уже глупо.

В массиве b появляется только половина возможных перестановок. Вы предалагаете остальные получать при печати (на экран/в файл), но т.к. этого не происходит (печати), то алгоритм спокойно перебирает только половину вариантов. Если вставить код печати, то кроме времени на саму распечатку, добавится время на переворачивания массива, чтобы его подготовить к печати.
Вы это время игнорируете, что не правильно.

Рассуждая способом аналогичным вашему, я мог бы предложить решение перебирающее числа от 1 до 13!, и добавить процедуру печати, которая получая номер перестановки формирует саму перестановку и затем выводит её. Это был бы самый быстрый алгоритм перебора перестановок :)
...
Рейтинг: 0 / 0
Бенчмарки C#, C++, Java, Delphi
    #34505408
Yuric74
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NotGonnaGetUsЕсли вставить код печати, то кроме времени на саму распечатку, добавится время на переворачивания массива, чтобы его подготовить к печати.
Вы это время игнорируете, что не правильно.
Значит, если есть задание вывести элементы массива на экран, начиная с конца массива, то Вы сначала перевернете массив, затем выведете его на экран, начиная с 1 элемента. Я правильно понял?

NotGonnaGetUs
Рассуждая способом аналогичным вашему, я мог бы предложить решение перебирающее числа от 1 до 13!, и добавить процедуру печати, которая получая номер перестановки формирует саму перестановку и затем выводит её. Это был бы самый быстрый алгоритм перебора перестановок :)
Было бы интересно увидеть алгоритм получения перестановки из ее номера, например, в лексикографическом порядке.
...
Рейтинг: 0 / 0
Бенчмарки C#, C++, Java, Delphi
    #34506791
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmoАлексей К, не, то, что с# тестили с баундчеком – это совершенно правильно (в джаве это вроде не отключается?..), но изврата ради конечно можешь написать в ансейфе, скомпилить, выложить, ты тут самый большой любитель этого дела :)И после этого вы щитаете меня извращенцем. :-)) Просто подумалось, раз уж извратились на делфи, почему-бы не извратиться на С#. :-))
...
Рейтинг: 0 / 0
Бенчмарки C#, C++, Java, Delphi
    #34506882
Yuric74
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Алексей КИ после этого вы щитаете меня извращенцем. :-))
Хотя и не мне...
Я ж просил сильно не пинать :) Изврат специально для данного теста, ни в одной своей проге не использовал goto. Хотя он до сих пор в спецификации Delphi :)
С другой стороны, никто не пинает asm за его jmp и условные переходы :) И asm\'овые вставки на Delphi будут активно использовать jmp, jne и т.д.
...
Рейтинг: 0 / 0
Бенчмарки C#, C++, Java, Delphi
    #34506908
Yuric74
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NotGonnaGetUs
Попробую описать подробнее.
Допустим, что стоит задача вывести на экран все возможные перестановки.
Тогда я в свой код после каждой строчки
Код: plaintext
inc(Result);
добавлю 2 подряд вызова процедуры
Код: plaintext
1.
WorkProc(b,true);
WorkProc(b,false);
где второй параметр - направление выборки из массива (true - от 1 до razmer, false - от razmer до 1)
Сама процедура
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
procedure WorkProc(p1:TArr; p2:boolean);
var
  i:integer;
begin
  if p2 then
    begin
      for i:= 1  to razmer do
        write(p1[i],' ');
      writeln;
    end
  else
    begin
      for i:=razmer downto  1  do
        write(p1[i],' ');
      writeln;
    end;
end;
Таким образом на экран будут выведены все возможные перестановки, причем в два раза быстрее , чем если перебирать все варианты перестановок.
Соответственно, вместо вывода на экран можно производить любые действия с элементами массива.
Если не нравится два цикла, то можно проверкой p2 задать начальный индекс(1 или razmer), конечный (razmer или 1) индекс и шаг (+1 или -1), а затем сделать один цикл while.
...
Рейтинг: 0 / 0
Бенчмарки C#, C++, Java, Delphi
    #34509006
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yuric74 NotGonnaGetUs
Попробую описать подробнее.


Не переживайте, я прекрасно понимаю о чём вы пишете.

Yuric74
Было бы интересно увидеть алгоритм получения перестановки из ее номера, например, в лексикографическом порядке.


Пусть к-номер перестановки, a[0..N-1] - набор уникальных значений.
Найдём i[0...N-1] из формулы:
к = (N-1)!*i(0) + (N-2)!*i(1) + ... + 1!*i(N-2) + 0*i(N-1),
где 0 <= i(p) <= N - 1 - p;

По a и i можно построить к-ую перестановку.

Пример:
a = [1 2 3 4];
k = 4;

4 = 6*0 + 2*2 + 1*0 + 0*0;
i = [0 2 0 0];

b[0] = a[0] ; // = 1;
a.remove[0]; // a = [2 3 4];

b[1] = a[2]; // = 4;
a.remove[2]; // a = [2 3];

b[2] = a[0]; //= 2;
a.remove[0]; // a = [3];

b[3] = a[0]; // = 3;
a.remove[0]; // a = [];

b = [1 4 2 3];

Проверяем:
1 2 3 4 , k = 0
1 2 4 3 , k = 1
1 3 2 4 , k = 2
1 3 4 2 , k = 3
1 4 2 3 , k = 4 - ok.
...
Рейтинг: 0 / 0
Бенчмарки C#, C++, Java, Delphi
    #34511409
Yuric74
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NotGonnaGetUs
Да я и не переживаю.
Вечером дома попробую ваш алгоритм на практике. Можно узнать источник алгоритма?

Кстати, я немного лажанулся :)
Вторая половина перестановок не будет зеркальной по отношению к первой половине. Поэтому придется считать все перестановки.
...
Рейтинг: 0 / 0
Бенчмарки C#, C++, Java, Delphi
    #34511970
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КИ после этого вы щитаете меня извращенцем. :-))ну вариант с репитом тоже сильно смахивает на извращение :)

Алексей КПросто подумалось, раз уж извратились на делфи, почему-бы не извратиться на С#. :-))ну я и сказал: сделай :)
...
Рейтинг: 0 / 0
Бенчмарки C#, C++, Java, Delphi
    #34512443
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yuric74 NotGonnaGetUs
Можно узнать источник алгоритма?

Я его в девятом или десятом классе придумал. Уже не помню в связи с чем :)
...
Рейтинг: 0 / 0
Бенчмарки C#, C++, Java, Delphi
    #34515188
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmo Алексей КПросто подумалось, раз уж извратились на делфи, почему-бы не извратиться на С#. :-))ну я и сказал: сделай :)Да я давно уже сделал. Там только одну строчку в исходниках надо поменять. :-))
...
Рейтинг: 0 / 0
Бенчмарки C#, C++, Java, Delphi
    #34588287
Master Alex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, что пофлеймим дальше? :)

Предлагаю обсудить известный тест SciMark2a http://math.nist.gov/scimark2/

Разница почти в два раза по Composite Score между Java и С# впечатляет.

Тестировалось на WinXPSP2 (P4 2.4 GHz)

Код: 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.
32.
33.
--------------------------------------------------------------------------------------------
c:\Projects\Java\SciMark2\benchmarks\new>c:\Programme\Java\jdk1. 6 . 0 \bin\java.exe -server jnt.scimark2.commandline

SciMark  2 .0a

Composite Score:  500 . 4790187699658 
FFT ( 1024 ):  283 . 3399287019464 
SOR (100x100):    629 . 3125359875736 
Monte Carlo :  140 . 21178180591943 
Sparse matmult (N= 1000 , nz= 5000 ):  403 . 29846153846154 
LU (100x100):  1046 . 2323858159282 

java.vendor: Sun Microsystems Inc.
java.version:  1 . 6 . 0 
os.arch: x86
os.name: Windows XP
os.version:  5 . 1 

--------------------------------------------------------------------------------------------

c:\Projects\Java\SciMark2\benchmarks\new\c#>scimark
**                                                               **
** SciMark2a Numeric Benchmark, see http://math.nist.gov/scimark **
**                                                               **
Mininum running time =  2  seconds

Composite Score:  284 , 09  MFlops
FFT            :  184 , 82  - ( 1024 )
SOR            :  364 , 87  - (100x100)
Monte Carlo    :   13 , 34 
Sparse MatMult :  451 , 00  - (N= 1000 , nz= 5000 )
LU             :  406 , 42  - (100x100)
--------------------------------------------------------------------------------------------
Исходники, бинарники брать тут (69 KB)
...
Рейтинг: 0 / 0
Бенчмарки C#, C++, Java, Delphi
    #34588549
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(задумчиво)
Мдя... впечатляет. Возму-ка я сорсы. Посмотрю. Наверное есть какая-то недооптимизация со стороны C#.
...
Рейтинг: 0 / 0
Бенчмарки C#, C++, Java, Delphi
    #34589774
Master Alex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавил тесты для VC++ и Intel C++

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
P4  2 . 4  GHz

SciMark2 Composite Scores:

VC C++			 521 
Java  1 . 6  server 	 513 
Intel C++                497 
C#			 284 
...
Рейтинг: 0 / 0
Бенчмарки C#, C++, Java, Delphi
    #34590928
Master Alex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На Core 2 Duo разница уменьшается, но все равно составляет 34%
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Core  2  Duo E6600  2 . 4  GHz

SciMark2 Composite Scores:

VC C++		        1042 
Intel C++                920 
Java  1 . 6  server 	 912 
C#			 603 

...
Рейтинг: 0 / 0
Бенчмарки C#, C++, Java, Delphi
    #34591068
mrbus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код C, переделаем на C++?
...
Рейтинг: 0 / 0
Бенчмарки C#, C++, Java, Delphi
    #34591078
mrbus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ладно, уже начал, выложу как буит...
...
Рейтинг: 0 / 0
Бенчмарки C#, C++, Java, Delphi
    #34591903
Master Alex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mrbusКод C, переделаем на C++?

А смысл?
...
Рейтинг: 0 / 0
Бенчмарки C#, C++, Java, Delphi
    #34592304
mrbus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Master Alex
А смысл?
А сравним C и C++ :)
...
Рейтинг: 0 / 0
Бенчмарки C#, C++, Java, Delphi
    #34593415
mrbus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот на C++ с использованием auto_ptr, vector. Безопаснее :), но медленнее :( вдвое
...
Рейтинг: 0 / 0
Бенчмарки C#, C++, Java, Delphi
    #34593457
mrbus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А теперь пару махинаций, и получаем вот что (!!!)

---- С++ ---
** SciMark2 Numeric Benchmark, see http://math.nist.gov/scimark **
** for details. (Results can be submitted to pozo@nist.gov) **
** **
Using 2.00 seconds min time per kenel.
FFT stopwatch 3.328000 flops 53230.000000 cycles 16384
FFT stopwatch 0.000003 flops 872120320.000000 cycles 262.055385
Composite Score: 2364.79
FFT Mflops: 262.06 (N=1024)
SOR Mflops: 346.45 (100 x 100)
MonteCarlo: Mflops: 89.96
Sparse matmult Mflops: 693.14 (N=1000, nz=5000)
LU Mflops: 10432.35 (M=100, N=100)


---- C ----
** SciMark2 Numeric Benchmark, see http://math.nist.gov/scimark **
** for details. (Results can be submitted to pozo@nist.gov) **
** **
Using 2.00 seconds min time per kenel.
FFT stopwatch 3.062000 flops 53230.000000 cycles 16384
FFT stopwatch 0.000003 flops 872120320.000000 cycles 284.820483
Composite Score: 497.09
FFT Mflops: 284.82 (N=1024)
SOR Mflops: 513.85 (100 x 100)
MonteCarlo: Mflops: 68.44
Sparse matmult Mflops: 630.76 (N=1000, nz=5000)
LU Mflops: 987.58 (M=100, N=100)
...
Рейтинг: 0 / 0
Бенчмарки C#, C++, Java, Delphi
    #34593458
mrbus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вместо vector используется рукописный класс auto_array + и немного оптимизации
...
Рейтинг: 0 / 0
25 сообщений из 265, страница 10 из 11
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Бенчмарки C#, C++, Java, Delphi
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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