порядок следования вложенных циклов

Это проблема с библиотекой, которую вы пытаетесь использовать. Проверьте этот вопрос , указанный в репозитории Github. Попытайтесь использовать вкладки native-base , если сможете. Это может помочь вам в этой ситуации. Если вы все еще получаете ошибку, вы можете сгенерировать вкладки вручную с помощью написанного вручную кода, который, по моему мнению, занимает много времени, но лучшее решение.

-1
задан Alessandro 19 January 2019 в 12:57
поделиться

1 ответ

Версия 2, скорее всего, будет быстрее, чем версия 1, из-за того, что Matlab хранит данные в памяти (по столбцам или, точнее, крайний левый индекс изменяется быстрее всего и сохраняется в смежной области памяти), а также из-за эффектов кэширования памяти (который извлекает из памяти одну страницу [например, 4 КБ = 500 double элементов] за раз). Это называется пространственной локализацией или принципом эталонной локализации . Зацикливая самый правый индекс перед левым, мы максимизируем эффективность кэша ЦП, так как ЦП не требуется доступ к основной памяти (ОЗУ) так часто, чтобы извлекать смежные элементы данных.

Эффект обычно мал или незначителен для небольших матриц данных, но может быть значительным, когда размер данных больше размера страницы вашей платформы - в таких случаях вы можете увидеть ускорения в 2 раза или даже больше с версией 2 по сравнению с версией 1 .

Сказав все это, если бы вы могли сделать ваш fun() векторизованным, потенциальные ускорения могли бы быть намного больше, чем при переключении порядка петли.

0
ответ дан Yair Altman 19 January 2019 в 12:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: