Pular para conteúdo

Exercícios: Aula 16 - Projeto Final: Otimização Baseada em Hardware

Resolver esses exercícios ajudará na fixação do conteúdo abordado na Aula 16.

1 - 1. Profiling Clássico (A Vida Real) (Básico 1)

Contexto:

Adivinhar onde o código está lento é a armadilha suprema do júnior.

Pergunta: Descreva o conceito fundamental de 1. Profiling Clássico (A Vida Real) e liste duas vantagens de seu uso.

2 - 2. O Grande Desafio (Mini-Projeto Prático) (Básico 2)

Contexto:

O curso desafia todo programador C/C++ a desenvolver a Prova de Fogo do Hardware:

Pergunta: Descreva o conceito fundamental de 2. O Grande Desafio (Mini-Projeto Prático) e liste duas vantagens de seu uso.

3 - 3. Conclusão da Trilha (Intermediário 1)

Contexto:

Você navegou nas extremas profundezas da arquitetura da Computação Modernizada.

Pergunta: Analisando o funcionamento de 3. Conclusão da Trilha, como essa métrica interage em um ambiente prático de compilação ou execução de código C/C++ a nível de sistema operacional?

4 - 1. Profiling Clássico (A Vida Real) (Intermediário 2)

Contexto:

Adivinhar onde o código está lento é a armadilha suprema do júnior.

Pergunta: Analisando o funcionamento de 1. Profiling Clássico (A Vida Real), como essa métrica interage em um ambiente prático de compilação ou execução de código C/C++ a nível de sistema operacional?

5 - 2. O Grande Desafio (Mini-Projeto Prático) (Desafio)

Contexto:

O curso desafia todo programador C/C++ a desenvolver a Prova de Fogo do Hardware:

Pergunta (Desafio): Elabore um cenário de arquitetura onde o uso incorreto ou a falta de entendimento de 2. O Grande Desafio (Mini-Projeto Prático) cause um problema grave de performance ou vazamento de memória. Como você mitigaria estruturalmente esse gargalo?



📚 Gabarito e Solução Comentada

Gabarito Explicado Abaixo estão as respostas esperadas e o embasamento teórico para os exercícios propostos na **Aula 16**. !!! success "Solução da Questão 1 - 1. Profiling Clássico (A Vida Real) (Básico 1)" **Explicação Detalhada do Assunto:** Adivinhar onde o código está lento é a armadilha suprema do júnior. Usamos ferramentas robustas para que a Arquitetura Linux diga-nos onde os gargalos fervem a CPU. !!! info "Expectativa de Resposta" O aluno deve inferir com clareza que o conceito de *1. Profiling Clássico (A Vida Real)* determina o desempenho global e não pode ser ignorado nas linguagens compiladas. Para níveis intermediários e desafio, exige-se consciência das integrações entre RAM, CPU e Kernel. !!! success "Solução da Questão 2 - 2. O Grande Desafio (Mini-Projeto Prático) (Básico 2)" **Explicação Detalhada do Assunto:** O curso desafia todo programador C/C++ a desenvolver a Prova de Fogo do Hardware: 1. Alocar um Array gigantesco Massivo no Heap Dinâmico via `malloc()` C (Não use vectors prontos para sentir a dor no braço). 2. Criar duas lógicas for(). 3. A primeira varre a matriz na exata sequencia algébrica *Row-Major*. Explorando a TLB/Localidade da Aula 08 e 06. 4. O segundo *For* varre as colunas saltando a intervalos gigantescos. Omissões grotescas de Cache Miss. 5. Invoquem o `std::chrono` em volta das funções, meçam os Mils e relatem num documento Markdown o porquê de um Software ser 10 vezes mais rápido que o outro mesmo usando "a cópia mental perfeitamente idêntica das mesmíssimas operações de if e soma na ALU". !!! info "Expectativa de Resposta" O aluno deve inferir com clareza que o conceito de *2. O Grande Desafio (Mini-Projeto Prático)* determina o desempenho global e não pode ser ignorado nas linguagens compiladas. Para níveis intermediários e desafio, exige-se consciência das integrações entre RAM, CPU e Kernel. !!! success "Solução da Questão 3 - 3. Conclusão da Trilha (Intermediário 1)" **Explicação Detalhada do Assunto:** Você navegou nas extremas profundezas da arquitetura da Computação Modernizada. Um engenheiro de Backend jamais olhará para `int x;` ou `for()` sem recordar os impactos térmicos, cache hits mortais de linha, L1 local, reordenações do std::atomic Memory Model ou Page Faults nos clusters de Sistema e Processos em Swap. Parabéns pela resiliência no vale do Silício e da Matemática discreta profunda. Nunca pare de medir e Otimizar. O Hardware dita as leis; o Software obedece. [:material-rocket: Finalizar e Visitar Projetos](../projetos/index.md){ .md-button .md-button--primary } !!! info "Expectativa de Resposta" O aluno deve inferir com clareza que o conceito de *3. Conclusão da Trilha* determina o desempenho global e não pode ser ignorado nas linguagens compiladas. Para níveis intermediários e desafio, exige-se consciência das integrações entre RAM, CPU e Kernel. !!! success "Solução da Questão 4 - 1. Profiling Clássico (A Vida Real) (Intermediário 2)" **Explicação Detalhada do Assunto:** Adivinhar onde o código está lento é a armadilha suprema do júnior. Usamos ferramentas robustas para que a Arquitetura Linux diga-nos onde os gargalos fervem a CPU. !!! info "Expectativa de Resposta" O aluno deve inferir com clareza que o conceito de *1. Profiling Clássico (A Vida Real)* determina o desempenho global e não pode ser ignorado nas linguagens compiladas. Para níveis intermediários e desafio, exige-se consciência das integrações entre RAM, CPU e Kernel. !!! success "Solução da Questão 5 - 2. O Grande Desafio (Mini-Projeto Prático) (Desafio)" **Explicação Detalhada do Assunto:** O curso desafia todo programador C/C++ a desenvolver a Prova de Fogo do Hardware: 1. Alocar um Array gigantesco Massivo no Heap Dinâmico via `malloc()` C (Não use vectors prontos para sentir a dor no braço). 2. Criar duas lógicas for(). 3. A primeira varre a matriz na exata sequencia algébrica *Row-Major*. Explorando a TLB/Localidade da Aula 08 e 06. 4. O segundo *For* varre as colunas saltando a intervalos gigantescos. Omissões grotescas de Cache Miss. 5. Invoquem o `std::chrono` em volta das funções, meçam os Mils e relatem num documento Markdown o porquê de um Software ser 10 vezes mais rápido que o outro mesmo usando "a cópia mental perfeitamente idêntica das mesmíssimas operações de if e soma na ALU". !!! info "Expectativa de Resposta" O aluno deve inferir com clareza que o conceito de *2. O Grande Desafio (Mini-Projeto Prático)* determina o desempenho global e não pode ser ignorado nas linguagens compiladas. Para níveis intermediários e desafio, exige-se consciência das integrações entre RAM, CPU e Kernel. --- [:octicons-arrow-left-24: Voltar para Exercício](exercicio-16.md){ .md-button }