Linux vs Windows con x264 64bits
Esta es una mini-prueba de fuerza bruta sobre el uso de CPU a la hora de comprimir vídeo.
ORDENADOR UTILIZADO EN AMBOS CASOS
- CPU: 2.33 QUAD 8200 sin OC
- RAM: 6GB DDR – 1066
- T.Gráfica: ATI HD2600 XT
- Monitor: ASUS / 1920 x 1080 de resolución
- Disco Duro: 500Gb seagate para Windows 7 y 250Gb para Ubuntu, ambos con SATA.
- Source de Vídeo: Utilización de los primeros 10.001 frames de Elephants Dreams de la RAW PNG a 1920×1080. Utilizado avs2yuv para convertir los frames en PNG a formato YUV para ser interpretado directamente por el encoder x264 sin la necesidad de un interprete adicional.
LINUX – Ubuntu 9.04 64bits (Instalado)
En Linux no existe la facilidad para encontrar el x264 compilado, así que se ha obtenido compilando con GCC 4.4.0 mediante los siguientes pasos:
sudo apt-get update
sudo apt-get install build-essential subversion git-core checkinstall yasmcd
git clone git://git.videolan.org/x264.git
cd x264
./configure
make
sudo checkinstall –fstrans=no –install=yes –pkgname=x264 –pkgversion “1:0.svn`date +%Y%m%d`-0.0ubuntu1″ –default
WINDOWS 7 -RTM – 64Bits
En windows he decidido probar dos versiones:
- Compilado con GCC 4.2.4: gcc 4.3.4 20090220 Komisar make fprofiled
- Compilado con ICC (Intel C++ Compiler (icc) v11.1.038)
PREPARACIÓN DE EQUIPO
En WINDOWS 7 y en UBUNTU 9.04 esta todo lo no indispensable desactivado:
- Antivirus
- Cualquier tipo de mensajería
- Navegadores
- Salvapantallas
Y en ambos casos se han realizado las pruebas después de un reinicio, para evitar cualquier problema con programas mal cerrados.
RESULTADOS (Utilizados los Preset Medium y Slow)
Ubuntu – x264 GCC:
Preset Medium
- x264 –pass 1 –bitrate 4000 –preset medium video.yuv –stats stats.tmp –psnr –ssim -o linux-medium.mkv 1920×1080
- encoded 10001 frames, 19.93 fps, 4058.74 kb/s
- x264 –pass 2 –bitrate 4000 –preset medium video.yuv –stats stats.tmp –psnr –ssim -o linux-medium.mkv 1920×1080
- encoded 10001 frames, 13.21 fps, 4001.25 kb/s
Preset Slow
- x264 –pass 1 –bitrate 4000 –preset slow video.yuv –stats stats.tmp –psnr –ssim -o linux-slow.mkv 1920×1080
- encoded 10001 frames, 11.67 fps, 4052.39 kb/s
- x264 –pass 2 –bitrate 4000 –preset slow video.yuv –stats stats.tmp –psnr –ssim -o linux-slow.mkv 1920×1080
- encoded 10001 frames, 7.46 fps, 4001.41 kb/s
Windows – x264 GCC:
Preset Medium
- x264 –pass 1 –bitrate 4000 –preset medium video.yuv --stats stats.tmp –psnr –ssim -o windows-medium.mkv 1920×1080
- encoded 10001 frames, 20.05 fps, 4059.16 kb/s
- x264 –pass 2 –bitrate 4000 –preset medium video.yuv --stats stats.tmp –psnr –ssim -o windows-medium.mkv 1920×1080
- encoded 10001 frames, 13.98 fps, 4001.27 kb/s
Preset Slow
- x264 –pass 1 –bitrate 4000 –preset slow video.yuv --stats stats.tmp –psnr –ssim -o windows-slow.mkv 1920×1080
- encoded 10001 frames, 11.70 fps, 4054.04 kb/s
- x264 –pass 2 –bitrate 4000 –preset slow video.yuv --stats stats.tmp –psnr –ssim -o windows-slow.mkv 1920×1080
- encoded 10001 frames, 7.88 fps, 4001.36 kb/s
Windows – x264 ICC:
Preset Medium
- x264-r1259_64b.[ICC] –pass 1 –bitrate 4000 –preset medium video.yuv –stats stats.tmp –psnr –ssim -o windows-medium-IC.mkv 1920×1080
- encoded 10001 frames, 20.16 fps, 4058.75 kb/s
- x264-r1259_64b.[ICC] –pass 2 –bitrate 4000 –preset medium video.yuv –stats stats.tmp –psnr –ssim -o windows-medium-IC.mkv 1920×1080
- encoded 10001 frames, 14.40 fps, 4001.25 kb/s
Preset Slow
- x264-r1259_64b.[ICC] –pass 1 –bitrate 4000 –preset slow video.yuv –stats stats.tmp –psnr –ssim -o windows-slow-IC.mkv 1920×1080
- encoded 10001 frames, 11.98 fps, 4052.61 kb/s
- x264-r1259_64b.[ICC] –pass 2 –bitrate 4000 –preset slow video.yuv –stats stats.tmp –psnr –ssim -o windows-slow-IC.mkv 1920×1080
- encoded 10001 frames, 8.21 fps, 4001.46 kb/s
CONCLUSIÓN
Es complicado determinar un ganador a la hora de realizar una comparativa de este tipo. El compilador que se utilice a la hora de crear el encoder x264, será el que determine que SO será mas veloz. En las pruebas presentadas windows vence a Linux (Ubuntu 9.04 – 64b), tanto utilizando el compilador gratuito GCC como el de pago de Intel ICC. Pero la diferencia es mínima (1%-2%), por no decir inapreciable.
Cabe reseñar despues de las pruebas, que las diferencias que existen en ambos SO a la hora de comprimir no son tanto como se pueda pensar, quedando prácticamente igualados en este campo, la fuerza bruta de la CPU.
PROGRAMAS UTILIZADOS PARA LAS PRUEBAS
- x264 r1259 – 64bits – GCC WINDOWS
- x264 r1259 – 64bits – ICC WINDOWS
- x264 r1259 – 64bits – GCC UBUNTU
- AVS2YUV 0.24
Muy buena comparativa. Yo también he hecho mis pruebas utilizando las mismas presets medium con la rev.1834 GCC. El resultado:
Ordenador: AMD Phenom II X6 1090T, 16GB DDRIII 1800, nVidia 9600GT
Linux (Fedora Core 14 x64):
38.23 fps / 26.41 fps
Windows (7 x64 Ultimate):
37.72 fps / 26.18 fps
Curiosamente a mi me va mas lento en Windows, aunque como has dicho, la diferencia es inapreciable. Lo que si que hay que reseñar es que en ambos casos las pruebas las hice con el SO recién instalado, lo que en Fedora significa todo lo necesario ya está instalado y en ejecución, y en Windows aún habría que ponerle un antivirus y firewall decentes como mínimo…
Gracias por adjuntar tu propia experiencia. Ya ha pasado un tiempo desde que hice esta pequeña comparación y quizás haya cambiado todo desde entonces.
Como se puede ver en tu prueba, efectivamente la diferencia entre un sistema y otro es realmente pequeño. Y donde esto importa es a efectos productivos de industria, quedando a nosotros simple usuarios como algo anecdótico.
Saludos