Местность справки. Поскольку данные хранятся по строкам, для каждой строки столбцы j находятся в смежных адресах памяти. Обычно ОС загружает целую страницу из памяти в кеш, и ссылки на соседние адреса, скорее всего, относятся к той же странице. Если вы увеличиваете индекс строки во внутреннем цикле, возможно, что эти строки будут на разных страницах (поскольку они разделены j удваивает каждый), и кешу, возможно, придется постоянно вводить и выкидывать страницы памяти, поскольку она ссылается данные. Это называется дробление и плохо для производительности.
На практике и с большими, современными кешами размеры строк/столбцов должны быть достаточно большими, прежде чем это вступит в игру, но это по-прежнему хорошая практика.
[РЕДАКТИРОВАТЬ] Ответ выше, характерен для C и может отличаться для других языков. Единственное, что я знаю, - это FORTRAN. FORTRAN хранит вещи в главном порядке столбцов (выше это строка), и было бы правильным изменить порядок инструкций в FORTRAN. Если вы хотите/нуждаетесь в эффективности, важно знать, как ваш язык реализует хранение данных.
Это третий базовый вопрос о домашнем задании, который я видел у вас в последние пару дней. Если вы боретесь, вы можете нанять репетитора. – tvanfosson 2008-10-20 11:45:37
эй, мужчина! это не домашнее задание ... Я наткнулся на это в классе! Поскольку учитель говорил по-китайски, я действительно не понял, о чем он говорил. Вот почему я хочу спросить вас всех ... – israkir 2008-10-20 11:55:03
Однако, если это домашняя работа, я могу поместить тег «домашняя работа» самостоятельно; так же, как я положил его на некоторые из моих последних вопросов до ... – israkir 2008-10-20 11:56:07