Python é a linguagem de programação mais preferida para Machine Learning e Inteligência Artificial, mas também é a menos preferida por ser lenta na solução de certos problemas que envolvem loops. Para contestar esse fato, os pesquisadores do EPFL Computer Vision Laboratory publicaram um relatório no qual apresentaram a competitividade do Python em relação ao C++ e ao Go resolvendo o popular quebra-cabeça N-queens.
Comparando Python, C++ e Go na solução do problema N-queens
O problema N-queens envolve um arranjo N de rainhas no tabuleiro de xadrez NxN. Por exemplo, nenhuma rainha pode atingir outra rainha (duas rainhas não podem aparecer no mesmo caminho horizontal, vertical ou diagonal).
Os pesquisadores resolveram o quebra-cabeça N-queens usando métodos sequenciais e paralelos escritos em C++, Python e Go. Eles argumentaram que, embora o C++ vença a corrida seguida pelo Go, o Python também se aproxima uma vez compilado usando o compilador Numba.
Para demonstrar o resultado, eles usaram a placa 8×8 e 10×10 padrão para resolver. Além disso, eles executaram todas as versões de código em um Intel Core i7 Quad Core de 2,9 GHz no Catalina OS.
Além disso, eles reexecutaram todo o código em uma CPU Intel Xeon X5690 executando o Ubuntu 18.04, e a classificação geral das implementações permaneceu inalterada.
Resultado do processamento sequencial e paralelo
Um algoritmo recursivo é o melhor método para calcular completamente o problema N-queens. A solução se baseava no fato de que não há duas rainhas em conflito uma com a outra, pois não devem estar na mesma linha, na mesma coluna ou na mesma diagonal.
No processamento sequencial, a implementação em Python, Go e C++ indicava que o Python era o mais lento. Mas quando o mesmo código foi compilado usando o compilador Numba Python, o C++ ainda venceu (com o Go mais lento em 6%) e o Numba Python mais lento em 12%.
Por outro lado, ao implementar essas mesmas linguagens usando processamento paralelo, eles categorizaram o Python em Para e Pool com base em duas abordagens para executar o Python em uma CPU multicore.
O resultado demonstrou que, em paralelismo, o código compilado para Para Numba exibe melhorias significativas e se aproxima do C++ e do Go. Além disso, o Python ultrapassou o Go para valores maiores, mas o C++ ainda é mais rápido.
No geral, o estudo mostra que a lentidão do Python pode ser amplamente superada usando o compilador Numba. Dessa forma, fica claro que esse compilador oferece desempenho comparável ao do C++, o qual é mais rápido que o Go.
Fonte: Fossbytes