NOTÍCIA

Primeiros benchmarks do Swift mostram que linguagem pode não ser tão rápida quanto previsto

O desenvolvedor Jukka Suomela escreveu um post no site Stack Overflow descrevendo suas conclusões na implementação de um algoritmo em Swift.

Primeiros benchmarks do Swift mostram que linguagem pode não ser tão rápida quanto previsto
Imagem: Redação iMasters

De acordo com a Apple, um dos grandes benefícios da linguagem Swift↳Swift13 conteúdosSwift 6: Segurança na Corrida de Dados — AtoresDev (Back & Front) · jan 2025Swift no Server-Side: o crescimento do Swift além do iOSDev (Back & Front) · mai 2026IA e Machine Learning com SwiftDev (Back & Front) · out 2025Ver tudo em Dev (Back & Front) →, desenvolvida para Cocoa e Cocoa Touch, é o desempenho. Entretanto, 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. Segundo ele, o desempenho foi bem abaixo do que em outras linguagens. Por meio dessa 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 segundo em C++ e 0,6 segundo quando o mesmo código foi escrito em Python. Os resultados foram obtidos compilando o código com -03 nível de otimização, normalmente utilizado pelo Xcode para compilar os projetos. Quando as otimizações do compilador estão completamente desativadas, correspondentes à flag -00, que é usada pelo Xcode para debug, o mesmo processo de classificação levou 88 segundos, de acordo com Jukka.

As descobertas dele foram confirmadas por outros desenvolvedores que se juntaram à conversa no Stack Overflow. O desenvolvedor sjeohp implementou o algoritmo de Quicksort para descobrir que a linguagem Swift era aproximadamente mil 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, no qual era descrito o teste de processamento de imagens.

De acordo com a documentação LLVM, as otimizações agressivas ignoram estritamente o padrão. -Ofast habilita todas -O3 otimizações e o -ffast-math, que ignora as especificações IEEE ou ISO para operações matemáticas, levando a 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 drasticamente os recursos de segurança da linguagem Swift.

Jukka também inspecionou o código assembly gerado pelo compilador em 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, o que poderia ser uma boa explicação para o 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 estiver em beta, a Apple não vai 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 do hemisfério norte.

Com informações de InfoQ

Matérias especiais e reportagens conduzidas internamente pela Redação iMasters. Acompanhe no Twitter @imasters e no Instagram/Threads @portalimasters

Mais de Redação iMasters
Ver perfil →