A Apple abriu o código fonte da suíte de benchmarking do Swift, uma peça chave para monitorar o desempenho do Swift e capturar a regressão de desempenho quando adicionadas novas funcionalidades na linguagem.
A suíte de benchmarking do Swift é uma coleção de arquivos fontes Swift que implementam suítes de testes e funções auxiliares de benchmarking, além de uma série de scripts Python que implementam uma série de testes e comodidades para comparações de métricas.
A Apple sugere executar a suíte de benchmarking antes de fazer o commit de qualquer mudança que pode impactar o desempenho, e antes de enviar um pull request, que é realizado antes de passar o --benchmarkflag para o build-script. O script de automação de build do Swift é responsável por tarefas básicas como construir uma aplicação Swift LLDB compatível, construindo para uma determinada plataforma, executando testes após a compilação, etc. Isso deve ajudar a capturar potenciais regressões de desempenho. A fim de dar sentido aos resultados de benchmark, pode ser útil primeiramente avaliar os resultados de um benchmark em uma branch principal e usa-los como base, então executar novamente na branch de desenvolvimento, onde os resultados serão automaticamente comparados com a execução anterior.
Por padrão, somente benchmarks Swift para o OS X são compilados, porém plataformas adicionais podem ser especificadas através de linhas de comando como:
$ swift/utils/build-script --ios --watchos --tvos
Ao usar o benchmark driver, os desenvolvedores podem controlar o número de interações em cada amostra de teste e o número de amostras para cada teste, como por exemplo:
$ ./Benchmark_O --num-iters=1 --num-samples=1
Como o engenheiro da Apple Luke Larson escreveu, atualmente, a suíte de benchmarking do Swift inclui 75 benchmarks, porém a Apple está encorajando contribuições para novos benchmarks, novas bibliotecas de ajuda e melhorias em geral. Um requisito importante para contribuições segundo Larson é que as contribuições devem estar sob a mesma licença do Swift. Sendo assim benchmarks sob outros tipos de licença não podem ser aceitos.
A suíte de benchmarking do Swift atualmente não está integrada com o recente anunciado sistema de integração contínua (Swift CI), que constrói e executa testes para o OS X, iOS e distribuição Linux Ubuntu x86_64. Com base no Jenkins, o Swift CI tem como objetivo ser flexível para suportar mais plataformas e arquiteturas vindas a comunidades de desenvolvimento Swift. O Swift CI permite a execução de testes dentro de um pull request, como por exemplo antes de fazer commit na branch principal, e notifica falhas para o desenvolvedor responsável. De acordo com Larson, a suíte de benchmarking do Swift será integrada com o Swift CI no futuro.