|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
07.09.2024, 16:11 | #11 |
Просветитель
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,833
|
Нужен не код, а объяснение побудительных мотивов. Точнее, не сразу код.
В начале должна быть некая преамбула, вроде: «мне показалось, что реализация массивов стандартными библиотеками современных языков программирования в отдельных/большинстве/всех случаях уже не соответствует машинному представлению массивов в памяти, как было раньше, а добавляет новые слои абстракции; захотелось выяснить их цену; чтобы избежать наведенных эффектов, я использовал такие/сякие методики...». Так всем заинтересованным в вопросе сразу станет понятно, что вы делали, и СТОИТ ЛИ смотреть в код и тратить на него свое время, или даже вдруг компилировать и запускать У СЕБЯ, если внезапно стало до усрачки интересно. Сейчас же вы предлагаете нам восстановить ваши мотивы, вникая в код. Это так не работает.
В разработке: воспроизводственный контур ИТ
|
08.09.2024, 01:12 | #12 | |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,085
|
Цитата:
Даже для C++ уж должны быть специализированные библиотеки для создания бенчмарков, к чему это хождение по граблям с замерами времени вручную? |
|
08.09.2024, 08:09 | #13 |
фрилансер
Участник клуба
Регистрация: 11.10.2019
Сообщений: 1,010
|
и ещё вопросы:
1) почему при поиске элемента в C++ использован "ручной" цикл, а не std::find_if со включенной векторизацией 2) была ли включена оптимизация |
08.09.2024, 16:00 | #14 |
Пользователь
Регистрация: 16.05.2024
Сообщений: 92
|
to pu4koff:
с интернетом не было связи когда запускались тесты. |
08.09.2024, 16:13 | #15 |
Пользователь
Регистрация: 16.05.2024
Сообщений: 92
|
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? |
08.09.2024, 16:16 | #16 |
Пользователь
Регистрация: 16.05.2024
Сообщений: 92
|
to Vapaamies:
>Нужен не код, а объяснение побудительных мотивов часто человек сам сказать не может чего он хочет и зачем что-то делает. И кошки тоже также непонятно зачем куда-то бегут |
08.09.2024, 19:31 | #17 |
Пользователь
Регистрация: 16.05.2024
Сообщений: 92
|
to pu4koff:
спасибо за подсказку про steady_clock |
09.09.2024, 08:17 | #18 |
фрилансер
Участник клуба
Регистрация: 11.10.2019
Сообщений: 1,010
|
так а с векторизацией то ? https://en.cppreference.com/w/cpp/al...ll_any_none_of
см. ExecutionPolicy |
09.09.2024, 11:33 | #19 |
Пользователь
Регистрация: 16.05.2024
Сообщений: 92
|
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 значительно ухудшает производительность. |
09.09.2024, 13:36 | #20 |
Пользователь
Регистрация: 16.05.2024
Сообщений: 92
|
архив
Если кому-то интересно сравнить, хотя бы для 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 |