INTRODUÇÃO
Pra quem trabalha com desenvolvimento já deve ter esbarrado com a necessidade de possuir algo capaz de verificar dependências, compilar e linkar seu programa de uma forma rápida e eficiente.
O sistema mais popular é com certeza o Autotools que provavelmente acompanha a maioria das distribuições Linux, porem nem tudo é perfeito…Vamos pensar em um projeto grande KDE. Vocês devem estar imaginando “ah com certeza ele usa o autotools pois esta presente na maioria dos sistemas…”, já foi a escolha deles mas atualmente o projeto que esta entre um dos maiores no universo open source usa o CMake. Caso deseje mais informações da mudança de autotools para cmake visiste Why the KDE project switched to CMake — and how (continued).
CMake é um sistema de construção de software que possui a mesma finalidade que o autotools porem prometem velocidade, flexibilidade e menor curva de aprendizado.
Eu, como um curioso da informática e fissurado por testar hipóteses graças a minha paixão a biologia tive a ideia de realizar um Benchmark do tempo de “configure” (procura por dependências e criação do respectivo Makefile) de cada um.
METODOLOGIA
Para realizar tal benchmark é necessário primeiro ter algum programa onde eu possa executar alguns scripts. Escolhi o Garden of Coloured Lights (jogo que precisa de 108% de atenção) já que é um programa que eu mesmo empacotei para o gentoo e conheço bem a estrutura de diretórios. Se usa gentoo aprecie o game dando um emerge garden.
Foi necessário criar o CMakeLists.txt pois o jogo não vem com suporte padrão ao CMake (isso deu dor de cabeça durante 2 dias). Em seguida vinha a parte de coleta de dados, para isso criei dois scripts que executavam tanto um ./configure quanto um cmake . 1000 vezes, sendo que em cada execução era verificado quanto tempo levo e no final dava o devido “clear” nos arquivos gerados e aguardava um segundo e começava a nova execução.
RESULTADOS
Deixei os scripts rodando e fui dormir acordei e comecei a analisar os dados. Os resultados foram compilados no gráfico abaixo.
Podemos ver que o CMake (tempo médio: 0,4459 segundos) foi muito mais rápido do que o autotools (tempo médio: 3,534 segundos). Os dois círculos em ambos os programas são outliers que sempre apareceram na primeira vez que executamos um programa.
CONCLUSÃO
CMake é mais rápido do que o velho e famoso autotools. Pretendia mostrar uma análise estatística mas a mesma se faz desnecessária (fiz mesmo assim Mann-Whitney e deu significativo P < 0.001).
Agora a batalha entre os dois sistemas pode ficar ainda pior pois vai entrar em ação o fator preferência e experiência de uso. Espero que minha humilde contribuição ajude alguns desenvolvedores que ainda possuem a duvida de qual sistema de construção utilziar.
Caso deseje ter acesso aos scripts deixe um comentário com e-mail que ficarei feliz em enviar.
REFERÊNCIAS/VERSÕES
Garden of Coloured Lights: 1.0.6
GCC: 4.4.1
CMake: 2.6-patch 4
GNU Make: 3.81
uname -a: Linux kogan-ryuu 2.6.31-gentoo-dvd #1 SMP PREEMPT Sat Sep 26 00:34:20 BRT 2009 i686 Intel(R) Core(TM)2 Duo CPU E7300 @ 2.66GHz GenuineIntel GNU/Linux
Oi, gostaria de saber mais sobre o cmake e como utiliza-lo.
Você teria algumas dicas para me dar. Obrigado
Olá Márcio,
a utilização do CMake é bem simples podendo se aprender com o material disponível no wiki oficial. Uma googlada em “CMake Tutorial” me deu resultados interessantes mas tenho que admitir que fiz uso apenas do wiki oficial praticamente.