Este repositório contém benchmarks para medir o desempenho de algoritmos de ordenação (Bubble Sort) aplicados a operações lógicas em diferentes linguagens de programação. O objetivo é comparar o tempo de execução para alocação, ordenação e liberação de memória para vetores de tamanhos variados.
As linguagens implementadas neste projeto incluem:
- C
- C++
- Python
- Java
- Rust
- Elixir
Cada implementação cria um arquivo de resultados em formato CSV contendo:
- O tamanho do vetor (
N
) - Tempo de alocação de memória
- Tempo de execução do Bubble Sort
- Tempo de liberação de memória
- Um indicador de se o vetor foi corretamente ordenado (
true
oufalse
)
Os arquivos de código estão divididos conforme a linguagem:
bubble_sort_benchmark.c
(C)bubble_sort_benchmark.cpp
(C++)bubble_sort_benchmark.py
(Python)BubbleSortBenchmark.java
(Java)bubble_sort_benchmark.rs
(Rust)bubble_sort_benchmark.exs
(Elixir)
Os arquivos de resultados gerados terão nomes que indicam a linguagem:
bubble_sort_results_c.dat
bubble_sort_results_cpp.dat
bubble_sort_results_python.csv
bubble_sort_results_java.csv
bubble_sort_results_rust.csv
bubble_sort_results_elixir.csv
- Compile o código:
gcc bubble_sort_benchmark.c -o bubble_sort_benchmark
- Execute o programa:
./bubble_sort_benchmark
- Compile o código:
g++ bubble_sort_benchmark.cpp -o bubble_sort_benchmark
- Execute o programa:
./bubble_sort_benchmark
- Execute o código diretamente:
python bubble_sort_benchmark.py
- Compile o código:
javac BubbleSortBenchmark.java
- Execute o programa:
java BubbleSortBenchmark
- Compile o código:
rustc bubble_sort_benchmark.rs
- Execute o programa:
./bubble_sort_benchmark
- Execute o código diretamente:
elixir bubble_sort_benchmark.exs
Os benchmarks são executados com os seguintes tamanhos de vetores:
- 100
- 1.000
- 10.000
- 100.000
- 1.000.000
- 2.000.000
- 3.000.000
- 4.000.000
- 5.000.000
- 6.000.000
- 7.000.000
- 8.000.000
- 9.000.000
- 10.000.000
Cada implementação gera um arquivo de resultados em formato CSV ou DAT, onde são registrados os tempos de alocação, ordenação e liberação de memória, além de um indicador se o vetor foi ordenado corretamente. Esses arquivos podem ser utilizados para análise de desempenho e visualização dos dados em gráficos.
Se desejar contribuir com melhorias ou novas linguagens, siga estes passos:
- Fork o repositório.
- Crie uma branch para a sua contribuição.
- Adicione suas mudanças e faça o commit.
- Crie um pull request com a sua contribuição.
Este projeto é licenciado sob a licença MIT. Veja o arquivo LICENSE
para mais detalhes.