BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Notícias Primeiros benchmarks do Swift: Talvez a linguagem não seja tão rápida quanto previsto

Primeiros benchmarks do Swift: Talvez a linguagem não seja tão rápida quanto previsto

O desempenho é um dos benefícios que a Apple afirma que a linguagem Swift deve trazer para o OS X e para os desenvolvedores iOS. As primeiras experiências e testes de performance executados por desenvolvedores independentes mostraram que em alguns casos, o desempenho da linguagem Swift ainda não é satisfatório.

O desenvolvedor Jukka Suomela escreveu um post no site Stack Overflow descrevendo suas conclusões na implementação de um algoritmo em Swift e que o desempenho era bem abaixo do que em outras linguagens. Através desta analise, Jukka demonstrou que o gargalo no seu código vinha de uma tarefa simples: ordenar um vetor.

Para realizar a ordenação de 1 milhão de números aleatórios, foi necessário aguardar 6 segundos quando escrito em Swift, contra 0.06 segundos quando escrito em C++ e 0.6 segundos quando o mesmo código é escrito em Python. Estes resultados foram obtidos compilando o código com -03 nível de otimização, nível normalmente utilizado pelo Xcode para compilar os projetos. Quando as otimizações do compilador estão completamente desativadas, correspondente a flag -00 que é usada pelo Xcode para debug, o mesmo processo de classificação levou 88 segundos, de acordo com Jukka,

As descobertas de Jukka foram confirmadas por outros desenvolvedores que se juntaram a conversa no Stack Overflow. O desenvolvedor sjeohp implementou o algoritmo de Quicksort para descobrir que a linguagem Swift era aproximadamente 1000 vezes mais lenta que C sem as otimizações do compilador habilitadas ( -Onone ). Por outro lado, ele descobriu que a linguagem Swift é ligeiramente mais rápida que C quando são aplicadas as otimizações agressivas ( -Ofast ) do compilador. Resultados semelhantes foram reportados em um segundo post no Stack Overflow, onde era descrito o teste de processamento de imagens.

As otimizações agressivas, de acordo com a documentação LLVM, ignoram estritamente o padrão. -Ofast habilita todas -O3 otimizações e adicionalmente habilita o -ffast-math, que ignora as especificações IEEE ou ISO para operações matemáticas, levando para uma possível saída errada nos programas que necessitam das garantias dessas especificações. Além disso, -Ofast desabilita as verificações de overflow de inteiros e estouros de posições de vetores, reduzindo severamente os recursos de segurança da linguagem Swift.

Indo mais a fundo na análise, Jukka inspecionou o código assembly gerado pelo compilador em um outro teste e descobriu que um simples loop em um vetor poderia ocasionar muitas chamadas de gerenciamento de memória ( reter e liberar ) que seriam totalmente desnecessárias.

Muitos desenvolvedores apontam que a linguagem Swift continua na sua fase beta e isso poderia ser uma boa explicação do comportamento atual dos programas desenvolvidos com Swift. Especificamente, o comportamento descrito com as desnecessárias chamadas de reter/liberar sugerem que os bugs de otimização ARC poderiam ser resolvidos sem a necessidade de otimizações agressivas.

Enquanto a linguagem está em sua fase beta, a Apple não irá permitir que os desenvolvedores enviem os aplicativos feitos em Swift para revisão. A versão final do Xcode está prevista para ser lançada no próximo outono.

Avalie esse artigo

Relevância
Estilo/Redação

Conteúdo educacional

BT