BT

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

por Sergio De Simone , traduzido por David Padilha Coelho De Lucca em 25 Jun 2014 |

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

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Dê sua opinião
Feedback geral
Bugs
Publicidade
Editorial
Marketing
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2016 C4Media Inc.
Política de privacidade
BT

We notice you’re using an ad blocker

We understand why you use ad blockers. However to keep InfoQ free we need your support. InfoQ will not provide your data to third parties without individual opt-in consent. We only work with advertisers relevant to our readers. Please consider whitelisting us.