Dotnet Core 3 - Hello World (Apenas 40 megabytes de memória)

Programação C em geral

Moderadores: 51, guest2003

Dotnet Core 3 - Hello World (Apenas 40 megabytes de memória)

Mensagempor Rodrigo_P_A » 24 Set 2019 10:54

Resolvi testar o dotnet Core 3 da Microsoft, realmente a ferramenta ajuda desenvolver rápido etc... muitas bibliotecas e muta gente disponível para programar em C#, Vb.Net etc...

dotnetcore3.png



Um simples Hello World, consume 40 megabytes de RAM....

dotnetcore-4.png



Complementando. A aplicação consome: 4.6 megabytes + 20.6 megabytes de memória compartilhada ( www.csl.mtu.edu/cs4411.ck/www/NOTES/process/shm/what-is-shm.html )

dotnetcore-4.png



-----------------

Conclusão, o dotnet é fácil de usar, tem várias ferramentas etc... mas se você quer performance e realmente otimizar recursos, num existe nada igual ao C/C++, não adianta.
Você não está autorizado a ver ou baixar esse anexo.
---
Avatar do usuário
Rodrigo_P_A
Dword
 
Mensagens: 2237
Registrado em: 12 Out 2006 18:27
Localização: Osasco - S.P - Brasil

Re: Dotnet Core 3 - Hello World (Apenas 40 megabytes de memó

Mensagempor Rodrigo_P_A » 24 Set 2019 11:11

os anexos estão fora de ordem, algum bug no forum, só pra esclarecer num tem print nenhum de C/C++, todos são da aplicação rodando Dotnet Core 3 em um debian 8.5
---
Avatar do usuário
Rodrigo_P_A
Dword
 
Mensagens: 2237
Registrado em: 12 Out 2006 18:27
Localização: Osasco - S.P - Brasil

Re: Dotnet Core 3 - Hello World (Apenas 40 megabytes de memó

Mensagempor pamv » 24 Set 2019 11:44

Rodrigo os 44.844 já estão sendo consumidos pelo que está executando no sistema, em princípio o executável é só 4 ou 5M. Qual é o tamanho do .OBJ ? O que tem dentro dele além do Hello World?
pamv
Word
 
Mensagens: 842
Registrado em: 20 Jun 2016 21:47

Re: Dotnet Core 3 - Hello World (Apenas 40 megabytes de memó

Mensagempor Rodrigo_P_A » 24 Set 2019 11:50

pamv escreveu:Rodrigo os 44.844 já estão sendo consumidos pelo que está executando no sistema, em princípio o executável é só 4 ou 5M. Qual é o tamanho do .OBJ ? O que tem dentro dele além do Hello World?


Sim, shared memory, mas é usado compartilhada pelo processo.

"Apenas 4MB" hehehe ? Para escrever um hello world?

Executável tem: 85Kbytes + 1 dll de 5kbytes

É um negocinho legal, mas tenho aplicação com interface gráfica completa e faz tudo e num usa isso de memória RAM.
---
Avatar do usuário
Rodrigo_P_A
Dword
 
Mensagens: 2237
Registrado em: 12 Out 2006 18:27
Localização: Osasco - S.P - Brasil

Re: Dotnet Core 3 - Hello World (Apenas 40 megabytes de memó

Mensagempor Rodrigo_P_A » 24 Set 2019 12:07

Veja só um aplicativo que eu fiz , em C/C++.

Ele é servidor Web, aceita várias conexões de dispositivos remotos, tem algorítimos para identificar biometria e veja o uso de memória:


nativo.png
Você não está autorizado a ver ou baixar esse anexo.
---
Avatar do usuário
Rodrigo_P_A
Dword
 
Mensagens: 2237
Registrado em: 12 Out 2006 18:27
Localização: Osasco - S.P - Brasil

Re: Dotnet Core 3 - Hello World (Apenas 40 megabytes de memó

Mensagempor pamv » 24 Set 2019 12:35

Rodrigo_P_A escreveu:
pamv escreveu:
"Apenas 4MB" hehehe ? Para escrever um hello world?



Por isso eu perguntei o que tem dentro do obj
Eu não sou usuário e não conheço ferramentas do windows, no unix eu usaria o comando size, ldd,nm, etc pra examinar o "obj" e o "exe"

Se o windows soma o tamanho total das libs dll usadas como tamanho do executável então até o linux passaria vergonha nesse quesito mas seria uma medida irreal
pamv
Word
 
Mensagens: 842
Registrado em: 20 Jun 2016 21:47

Re: Dotnet Core 3 - Hello World (Apenas 40 megabytes de memó

Mensagempor Rodrigo_P_A » 24 Set 2019 12:43

Entendi, mas veja a comparação que eu postei.
---
Avatar do usuário
Rodrigo_P_A
Dword
 
Mensagens: 2237
Registrado em: 12 Out 2006 18:27
Localização: Osasco - S.P - Brasil

Re: Dotnet Core 3 - Hello World (Apenas 40 megabytes de memó

Mensagempor pamv » 24 Set 2019 13:17

Eu vi, de fato, o .NET é comilão de memória mas realmente eu não entendo como o windows lida com os detalhes dos processos e o que significam de fato esses números. O top (e o ps) do Unix é mais informativo para mim pois separa em memória virtual, residente e shared durante a execução e os nm, size, ldd, etc informam sobre o executável.
Você tem como compilar esse hello e gerar um executável estático só pra ver a diferença de tamanho dos arquivos?
pamv
Word
 
Mensagens: 842
Registrado em: 20 Jun 2016 21:47

Re: Dotnet Core 3 - Hello World (Apenas 40 megabytes de memó

Mensagempor Rodrigo_P_A » 24 Set 2019 13:22

Não conheço o dotnetcore, nem sei como compilar "estático" nem sei se isso é possível. Mas, pelo menos para mim, o que importa é: é um simples hello world!

O comparativo que coloquei acima, só para ter ideia, o meu executável tem 13 MB e consome menos memória do que o Hello World do dotnetcore3.

Mas como disse, é muito mais fácil aprender usando o dotnetcore, C#, VB.net do que c/c++, então dependendo da política da empresa o dotnetcore pode ser uma alternativa interessante, acho que vai ter mais oferta de mão de obra. As ferramentas integradas com o Visual Studio facilitam muito para o desenvolvedor.

Pode ser uma alternativa mais fácil também para criar aplicações para sistemas embarcados, já que o dotnetcore tem para linux ARMHF e ARM64 tbm.

Não fiz comparativo ainda comparando uma aplicação Web backend em php VS dotnetcore para ver quem leva a melhor em uso de memória, quando eu tiver um tempo vou fazer.
---
Avatar do usuário
Rodrigo_P_A
Dword
 
Mensagens: 2237
Registrado em: 12 Out 2006 18:27
Localização: Osasco - S.P - Brasil

Re: Dotnet Core 3 - Hello World (Apenas 40 megabytes de memó

Mensagempor pamv » 24 Set 2019 13:44

Rodrigo
Quando você gera um executável estático você manda o link loader adicionar todas as funções de biblioteca que ele necessita de forma que ele possa executar sem a necessidade da presença delas no sistema, isso impacta no tamanho e também no desempenho mas tem suas aplicações. Se desse para você gerar a versão estática daria para ter uma idéia se essa gordura toda é usada pelo seu programa ou não. Abaixo um exemplo dessa diferença de tamanho dos executáveis com um programinha de benchmark
Código: Selecionar todos
-rwxrwxr-x 1 pamv pamv 922608 Set 24 12:48 flops-static.x
-rwxrwxr-x 1 pamv pamv  18544 Set   1  22:26 flops.x


E aqui a diferença de tamanho deles executando, repare como muda

Código: Selecionar todos
  PID USER     PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 6780 pamv   20   0    1128      4         0  R  100,0  0,0   0:05.11 flops-stat
 6785 pamv   20   0    4364    648    580  R  100,0  0,0   0:04.91 flops.x


O desempenho também muda bastante entre uma versão e outra. Bom, era isso.
pamv
Word
 
Mensagens: 842
Registrado em: 20 Jun 2016 21:47

Re: Dotnet Core 3 - Hello World (Apenas 40 megabytes de memó

Mensagempor Rodrigo_P_A » 24 Set 2019 13:56

Eu sei gerar estático usando gcc, não sei gerar usando o dotnetcore, acho que nem dá pois ele é código gerenciado, não nativo.

Eu pensei que o uso de memória pelo dotnet fosse um pouco mais inteligente, sobre teste de benchmark etc... eu num fiz nada disso.
---
Avatar do usuário
Rodrigo_P_A
Dword
 
Mensagens: 2237
Registrado em: 12 Out 2006 18:27
Localização: Osasco - S.P - Brasil

Re: Dotnet Core 3 - Hello World (Apenas 40 megabytes de memó

Mensagempor pamv » 24 Set 2019 14:08

O teste de benchmark era o programa que eu tinha mais a mão para falar das diferenças entre executável estático e dinâmico e não para falar de desempenho.
Gostaria de ter usado algo como o xterm que usa janelas mas teria que baixar os fontes. Olhando no google parece que não é comum alguem perguntar sobre executáveis estáticos no dotnet
pamv
Word
 
Mensagens: 842
Registrado em: 20 Jun 2016 21:47

Re: Dotnet Core 3 - Hello World (Apenas 40 megabytes de memó

Mensagempor Rodrigo_P_A » 24 Set 2019 14:10

pamv escreveu:O teste de benchmark era o programa que eu tinha mais a mão para falar das diferenças entre executável estático e dinâmico e não para falar de desempenho.
Gostaria de ter usado algo como o xterm que usa janelas mas teria que baixar os fontes. Olhando no google parece que não é comum alguem perguntar sobre executáveis estáticos no dotnet



Quais diferenças vc já percebeu entre código nativo estático x link dinamico?
---
Avatar do usuário
Rodrigo_P_A
Dword
 
Mensagens: 2237
Registrado em: 12 Out 2006 18:27
Localização: Osasco - S.P - Brasil

Re: Dotnet Core 3 - Hello World (Apenas 40 megabytes de memó

Mensagempor Rodrigo_P_A » 25 Set 2019 09:41

Mais um teste, um simples website em Asp.Net Core 2.0 .... 400MB de RAM.


aspnetcore.png
Você não está autorizado a ver ou baixar esse anexo.
---
Avatar do usuário
Rodrigo_P_A
Dword
 
Mensagens: 2237
Registrado em: 12 Out 2006 18:27
Localização: Osasco - S.P - Brasil

Re: Dotnet Core 3 - Hello World (Apenas 40 megabytes de memó

Mensagempor tcpipchip » 25 Set 2019 12:20

Ou seja, 400Mb é loucura ?
------------------------------------------
http://www.youtube.com/tcpipchip
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Próximo

Voltar para Visual C++/C/C++/C#

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron

x