Как лучше разместить в оперативной памяти массив комплексных чисел с точки зрения производительности? В двух массивах: double re[N]; double im[N]; или в одном double c[2*N], где действительные и мнимые части чередуются? Есть ли какая-нибудь разница с точки зрения производительности? Может, во втором случае лучше работает кэш процессора, т.к. действительная и мнимая части числа используются одновременно? Мне удобнее в двух массивах. P.S. Про структуры и читабельность я знаю. Кроме того, мне помнится, что в некоторых популярных математических библиотеках действительные и мнимые части хранятся отдельно. Например, UMFPACK поддерживает оба варианта. Логика мне тоже подсказывает, что лучше использовать один массив, но я не уверен, хотелось бы каких-нибудь подтверждений, результатов тестов...

16 Июл 2021 в 20:06
115 +1
0
Ответы
1

С точки зрения производительности оба способа хранения массива комплексных чисел имеют свои плюсы и минусы.

В одном массиве double c[2*N] действительные и мнимые части чисел хранятся последовательно. Это может улучшить кэш-попадание и использование кэш-памяти процессора, поскольку при обработке массива комплексных чисел при доступе к каждому элементу сразу подгружаются и действительная, и мнимая части. Однако, при таком способе хранения может возникнуть сложность при работе с отдельными частями комплексных чисел или при обращении к ним независимо друг от друга.

В двух отдельных массивах double re[N]; double im[N] каждая часть комплексных чисел хранится независимо. Это может облегчить работу с отдельными частями комплексных чисел, например, если требуется выполнить операции только над действительными или только над мнимыми частями. Однако, при таком способе хранения может возникнуть дополнительные накладные расходы на кэш-память из-за необходимости обращаться к двум массивам для доступа к полному комплексному числу.

Итак, выбор способа хранения массива комплексных чисел зависит от конкретной задачи, которую вы планируете решать с этими данными. Если у вас есть возможность провести тестирование производительности для вашего конкретного случая, это будет наиболее надежным способом определить, какой способ хранения будет более эффективным.

17 Апр в 14:27
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 90 620 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир