Hoje descobri que existe um bzip2 para processadores com vários núcleos, o pbzip2. É um projeto independente do bzip2 e que depende deste para compilar e executar, mas que possui um desempenho assustadoramente maior. Em testes simples de compactação e descompactação, encontrei os seguintes números:
| Comando | Tempo de execução |
|---|---|
| pbzip2 glibc-2.11.tar | 0m15.246s |
| pbunzip2 glibc-2.11.tar.bz2 | 0m3.391s |
| bzip2 glibc-2.11.tar | 0m25.155s |
| bunzip2 glibc-2.11.tar.bz2 | 0m5.592s |
A máquina do teste era um Lenovo G530 Pentium Dual Core T3400 (2.16Ghz) com 2Gb de RAM rodando Gentoo ~amd64. Fiz vários testes além destes e os resultados foram muito parecidos. Resumindo, o bzip2 levou cerca de 60% mais tempo para concluir a operação requisitada, um ganho bem apreciável. Segundo o site do pbzip2 e benchmarks independentes, a vantagem só tende a aumentar conforme aumenta o número de núcleos, que no meu caso são apenas 2.
Você pode instalar o pbzip2 facilmente no seu Gentoo com:
# emerge -av pbzip2
Atenção à USE flag symlink, que permite criar symlinks do pbzip2 para o bzip2, fazendo com que ele se torne padrão para os usuários do sistema (exceto o root). Eu decidi substituir definitivamente o bzip2 do meu Gentoo e por isso fiz 2 ebuilds especiais para isso e em breve disponibilizarei no meu overlay pessoal. Entretanto, vale lembrar que ele pode vir a apresentar bugs, no caso dos usuários comuns, não há grandes riscos, mas sugiro cuidado a quem deseja, assim como eu, substituir o bzip2 original globalmente.