![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Просветитель
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,844
|
![]()
Нужен не код, а объяснение побудительных мотивов. Точнее, не сразу код.
В начале должна быть некая преамбула, вроде: «мне показалось, что реализация массивов стандартными библиотеками современных языков программирования в отдельных/большинстве/всех случаях уже не соответствует машинному представлению массивов в памяти, как было раньше, а добавляет новые слои абстракции; захотелось выяснить их цену; чтобы избежать наведенных эффектов, я использовал такие/сякие методики...». Так всем заинтересованным в вопросе сразу станет понятно, что вы делали, и СТОИТ ЛИ смотреть в код и тратить на него свое время, или даже вдруг компилировать и запускать У СЕБЯ, если внезапно стало до усрачки интересно. Сейчас же вы предлагаете нам восстановить ваши мотивы, вникая в код. Это так не работает.
В разработке: воспроизводственный контур ИТ
|
![]() |
![]() |
![]() |
#12 | |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,089
|
![]() Цитата:
Даже для C++ уж должны быть специализированные библиотеки для создания бенчмарков, к чему это хождение по граблям с замерами времени вручную? |
|
![]() |
![]() |
![]() |
#13 |
фрилансер, препод.
Участник клуба
Регистрация: 11.10.2019
Сообщений: 1,043
|
![]()
и ещё вопросы:
1) почему при поиске элемента в C++ использован "ручной" цикл, а не std::find_if со включенной векторизацией 2) была ли включена оптимизация |
![]() |
![]() |
![]() |
#14 |
Форумчанин
Регистрация: 16.05.2024
Сообщений: 200
|
![]()
to pu4koff:
с интернетом не было связи когда запускались тесты. |
![]() |
![]() |
![]() |
#15 |
Форумчанин
Регистрация: 16.05.2024
Сообщений: 200
|
![]()
to Алексей1153:
>почему при поиске элемента в C++ использован "ручной" цикл я исследовал скорость доступа к элементам массива, поэтому через индексатор. Для сравнения также применял found = std::any_of( set1.begin(), set1.end(), [ &el1 ] ( const long int& el ) { return el1 == el; } ); Этот вариант как раз оказался на 2-м месте.( после Java). Оптимизация опциями -O и -O3 в С++. Во всех языках применял опции оптимизации. Java оказалась быстрее не из-за опций, а ... вот смотрите, если провести проверку на скрость для разных языков в Windows, то оказывается, что самый быстрый - C++/CLR. Ну то есть это MS C++ с опцией чтобы генерировал код для .Net. Он на 15% быстрее Delphi. Чуете в чём дело? Если не совсем, тогда вопрос-подсказка: Что общего между .Net и Java? |
![]() |
![]() |
![]() |
#16 |
Форумчанин
Регистрация: 16.05.2024
Сообщений: 200
|
![]()
to Vapaamies:
>Нужен не код, а объяснение побудительных мотивов часто человек сам сказать не может чего он хочет и зачем что-то делает. И кошки тоже также непонятно зачем куда-то бегут |
![]() |
![]() |
![]() |
#17 |
Форумчанин
Регистрация: 16.05.2024
Сообщений: 200
|
![]()
to pu4koff:
спасибо за подсказку про steady_clock |
![]() |
![]() |
![]() |
#18 |
фрилансер, препод.
Участник клуба
Регистрация: 11.10.2019
Сообщений: 1,043
|
![]()
так а с векторизацией то ? https://en.cppreference.com/w/cpp/al...ll_any_none_of
см. ExecutionPolicy |
![]() |
![]() |
![]() |
#19 |
Форумчанин
Регистрация: 16.05.2024
Сообщений: 200
|
![]()
to Алексей1153:
Понимаю, что я не звезда чтобы все читали каждое моё сообщение, просто об этом я писал раньше в сообщении "Часть 1". https://programmersforum.ru/showthread.php?t=347255 вот текст оттуда: Если массив размещять в типе-контейнере std::vector, то работать с ним надо при помощи функций из <algorithm>, а иначе нет смысла использовать вектор. Код: Код:
![]() Код: Код:
![]() std::execution::unseq - разрешает в однопоточном коде использовать SIMD. Проверим скорость работы программы со всеми этими параметрами в ALT (в Debian компиляторы это не поддерживают). В секундах: GNU C++ - 10.44525 GNU C++ (alt) - 11.32513 GNU C++ (alt) паралел. - 11.10373 GNU C++ (alt) паралел.+SIMD - 28 GNU C++ (alt) SIMD - 20 Clang C++ - 10.27182 Clang C++ (alt) паралел. - 11.2052 Clang C++ (alt) паралел.+SIMD - 18 Видно, что параллельный код не генерируется, только однопоточный. SIMD значительно ухудшает производительность. |
![]() |
![]() |
![]() |
#20 |
Форумчанин
Регистрация: 16.05.2024
Сообщений: 200
|
![]()
Если кому-то интересно сравнить, хотя бы для C++ и Java, вот текст, можно в Windows запускать, платформоспецифичного нет:
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Сравнение языков на массивах. Часть 2 | DeepFlake | Общие вопросы по программированию, компьютерный форум | 6 | 01.09.2024 16:32 |
Сравнение языков на массивах. Часть 1 | DeepFlake | Общие вопросы по программированию, компьютерный форум | 2 | 25.08.2024 18:05 |
Сравнение языков по скорости | DeepFlake | Общие вопросы по программированию, компьютерный форум | 29 | 20.08.2024 17:18 |
Поочерёдная вставка в дек. Есть заполненный дек d1. Необходимо заполнить дек d2 так: d1[0] - в конец, d[n-1] - в начало, d1[2] - в конец и тд. Как реализовать? | _D4rki_ | Помощь студентам | 2 | 09.07.2017 09:21 |
Сравнение значений в 2 массивах | Verano naranjo | Microsoft Office Excel | 10 | 01.12.2010 11:49 |