Skip to content

Comparação de desempenho na multiplicação de matrizes usando C, C++, Python, Java, Rust, Elixir, e mais. Analisando a eficiência de cada linguagem ao lidar com operações computacionalmente intensivas em diferentes escalas.

License

Notifications You must be signed in to change notification settings

Lucas-Sperotto/matrix-multiplication-benchmark

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

170 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Matrix Multiplication Benchmark

Este repositório contém códigos para realizar um benchmark de multiplicação de matrizes em várias linguagens de programação (C, C++, Python, Java – com expansão planejada para Rust e Elixir).
O objetivo é comparar o desempenho de cada linguagem em uma operação intensiva de cálculo: a multiplicação de matrizes quadradas de diferentes tamanhos.


🎯 Objetivo

  • Avaliar o tempo de execução e o uso de memória na multiplicação de matrizes.
  • Comparar implementações equivalentes entre diferentes linguagens.
  • Construir uma base colaborativa de resultados, permitindo que qualquer pessoa rode os testes em sua máquina e contribua com seus dados.

🚀 Como começar

Clone o repositório:

git clone https://github.com/<usuario>/<repo>.git
cd <repo>

Execute os benchmarks:

  • Linux/WSL:

    chmod +x run_all.sh
    ./run_all.sh
  • Windows (PowerShell):

    .\run_all.ps1

Os resultados serão salvos em:

out/<NOME_DA_EXECUCAO>/

com arquivos resultado_c.csv, resultado_cpp.csv, resultado_java.csv, resultado_python.csv.


📊 Gráficos automáticos

Ao final da execução no Linux/WSL, o script run_all.sh chama automaticamente o plot_benchmarks.py, que gera gráficos comparativos para:

  • TCS: Tempo de Cálculo da Multiplicação
  • TAM: Tempo de Alocação de Memória
  • TDM: Tempo de Desalocação de Memória (quando disponível na linguagem)

Cada gráfico inclui também uma curva de referência baseada em $N^3$, representando a complexidade teórica.


Resultados Esperados

  • C e C++ tendem a ter desempenho mais rápido em operações intensivas de CPU.
  • Rust oferece segurança de memória com um impacto mínimo no desempenho.
  • Python, por ser interpretado, tende a ser mais lento.
  • Elixir e Java podem variar em desempenho dependendo da implementação e do uso de paralelismo.

📚 Documentação complementar

  • EXECUTION.md → Guia completo de execução (Linux/WSL e Windows).
  • CONTRIBUTING.md → Como rodar localmente e contribuir com seus resultados.
  • OPERATIONS.md → Análise teórica do número de operações na multiplicação de matrizes.

👥 Colaboração

Sinta-se à vontade para contribuir com melhorias ou incluir outras linguagens para comparação. Basta abrir uma issue ou enviar um pull request. Veja CONTRIBUTING.md para saber como participar.


📄 Licença

Este projeto está licenciado sob a licença MIT - veja o arquivo LICENSE para mais detalhes.

Entre em contato conosco e colabore.


About

Comparação de desempenho na multiplicação de matrizes usando C, C++, Python, Java, Rust, Elixir, e mais. Analisando a eficiência de cada linguagem ao lidar com operações computacionalmente intensivas em diferentes escalas.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors