CMake vs Autools: Quem é mais rápido?

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.

Boxplot CMake vs Autotools

Gráfico 1 - Tempo de execução de cada programa.

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

2 ideias sobre “CMake vs Autools: Quem é mais rápido?

  1. Márcio Franca

    Oi, gostaria de saber mais sobre o cmake e como utiliza-lo.
    Você teria algumas dicas para me dar. Obrigado

    Resposta
    1. dvdscripter Autor do post

      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.

      Resposta

Deixar mensagem para Márcio Franca Cancelar resposta