Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Alteração no código deixou a execução mais lenta

Boa noite!

Ao implementar a alteração no código conforme o código existente no gitHub (https://github.com/alura-cursos/Paralelismo-com-CSharp-e-.NET/blob/d7075d6faf994f0791bc1cfcb435e359696a0aa7/ByteBank.View/MainWindow.xaml.cs#L35-L100), conforme consta na opinião do professor, houve uma perda de desempenho.

Antes a execução gerava em torno de 14 a 15 segundos, após a implementação do código abaixo, essa execução foi para 23 segundos.

Segundo a configuração do meu pc ele não tem núcleos (pelo menos visível na lista de CPUs). Mas a configuração do meu processador é a seguinte: Intel(R) Core(TM) i5-7200U CPU 2.50GHz 2.70GHz.

Mesmo alterando o timer do método Sleep, o tempo não alterou. O que pode ter influenciado essa perda de performance?

1 resposta
solução!

Olá, Thiago!

Muitas coisas influenciam a performance de uma aplicação quando lidamos com threads de baixo nível - ou seja, usando a classe Thread.

A prioridade dada a cada processo, pelo sistema operacional; a afinidade de cada processo por core do processador; o número de aplicações de uso intensivo da CPU ou entrada e saída; etc. São muitas variáveis envolvidas e estas são apenas algumas delas!

Seu processador possui 2 cores físicos, cada um com 2 cores virtuais, totalizando 4 cores virtuais.

O core virtual é possível quando o processador "engana" o sistema operacional e o faz acreditar que, de fato, existem 4 cores no processador. Esta relação cores reais/virtuais também influencia na performance de nossa aplicação quando lidamos com threads em baixo nível.

Para a gravação das aulas, foi usado uma máquina com 4 cores reais e 8 cores virtuais - quantidade, teoricamente, suficiente para acomodar todas as nossas threads criadas. Note que se você criar mais threads que o número de cores de seu processador, muito possivelmente você enfrentará problemas com performance - mas, note que isto não é uma regra, depende bastante do tipo de aplicação!

Avançando no curso, aprenderemos técnicas para não precisarmos lidar com essa complexidade de cores do processador e delegar esta responsabilidade para o .NET!


A respeito da contagem de cores reais ou virtuais, encontrei este vídeo com uma boa explicação https://www.youtube.com/watch?v=MpFiUBOVxRM