Ao implementar um algoritmo que percorre uma matriz de registros 'dados' armazenada em memória row-major, qual…
Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva
Identificar o comportamento dos algoritmos no que diz respeito ao consumo de recursos como tempo de execução, espaço de memória e energia, entre outros.
Fonte: Base Nacional Comum Curricular (MEC).Questão
Ao implementar um algoritmo que percorre uma matriz de registros 'dados' armazenada em memória row-major, qual ordem de iteração tipicamente melhora o desempenho do cache?
- A) Usar laço externo sobre linhas e laço interno sobre colunas (percorrer linha a linha).
- B) Usar um laço duplo percorrendo todos os elementos aleatoriamente.
- C) Percorrer a matriz em ordem reversa, da última linha para a primeira.
- D) Iterar colunas primeiro, depois linhas, para melhor desempenho.
- E) Utilizar acesso sempre sequencial à matriz completa antes de qualquer laço.
✅ Resposta correta: alternativa A
Resolução passo a passo
- Em memória row-major (ordem por linhas), os elementos de uma mesma linha ficam armazenados em posições de memória contíguas, uma após a outra, e a linha seguinte começa logo depois da anterior.
- Quando o laço externo percorre as linhas e o interno percorre as colunas, os acessos seguem exatamente a ordem em que os dados estão gravados na memória. Isso aproveita o princípio da localidade espacial: ao carregar um bloco (linha de cache) da memória, os elementos vizinhos que serão usados logo em seguida já estão no cache, reduzindo falhas de cache.
- Resolvendo por conta própria, a alternativa correta é a A, e ela coincide com o gabarito oficial.
- A alternativa B está errada, pois acessos aleatórios destroem a localidade espacial e aumentam as falhas de cache.
- A alternativa C está errada, pois a ordem reversa ainda percorre a memória de forma contínua, mas não é a ordem típica que melhora o cache; o que importa é a sequência ser a de armazenamento, e a reversa não é a ordem natural de row-major.
- A alternativa D está errada, pois percorrer colunas primeiro, em row-major, salta entre linhas e causa muitos acessos não contíguos, piorando o desempenho.
- A alternativa E está errada, pois não existe um 'acesso sequencial à matriz completa antes de qualquer laço'; essa frase não descreve um procedimento de iteração válido.
💡 Dica: Considere a ordem de acesso aos elementos da matriz.
Alternativa por alternativa
Percorrer elementos na mesma linha consecutivamente usa a localidade espacial do row-major, reduzindo faltas de cache e melhorando desempenho.
O aluno acredita que embaralhar os acessos ajuda a distribuir a carga na memória, sem perceber que isso elimina a localidade espacial.
O aluno associa a ordem reversa a uma otimização, sem considerar que ela não segue a disposição contígua dos dados em row-major.
O aluno supõe que a ordem colunas-linhas é mais eficiente por analogia com a leitura de tabelas, sem notar que em row-major as colunas de uma mesma linha estão contíguas.
Por que engana: Escolher a opção que sugere percorrer colunas primeiro, que pode resultar em um desempenho inferior devido ao acesso não sequencial à memória.
O aluno lê a palavra 'sequencial' como se bastasse ter acesso sequencial em algum momento, sem entender que o padrão de iteração dos laços é o que determina a localidade.
Raio-X da questão
ordem de iteração matriz
avaliacao
ordem de iteração matriz
Revisar conceitos de acesso a matrizes em memória row-major.
Escolher a opção que sugere percorrer colunas primeiro, que pode resultar em um desempenho inferior devido ao acesso não sequencial à memória.
ciencia_tecnologia
pensamento_critico
cientifico
Questões parecidas com resolução
- Considere uma matriz M[R][C] de registros armazenada em memória no formato row-major. Em um algoritmo que percorre M com…
- Em um algoritmo que percorre uma matriz de registros 'matrizDados' usando variáveis índice i e j para acessar elementos…
- Dado um algoritmo que processa uma matriz esparsa de notas de alunos, qual representação de dados reduz…
- Para representar uma grande matriz de leituras de sensores em que a maioria dos valores é zero, qual técnica de…
- Dada uma matriz não ordenada de registros, qual estratégia é adequada para localizar um dado específico: varredura…
- Como uma estrutura de dados como uma matriz pode otimizar um programa?
🔎 Procurar outra questão
Procure no banco do GeraProva pelo tema ou por um trecho do enunciado. Cada questão já vem com resolução comentada e a análise de cada alternativa.
Professor: monte a prova com questões como esta, com gabarito e folha de respostas, em 30 segundos. Ver planos · Blog
