Não é um problema do S / W, e não parece ser um problema com o Atom. Eu tenho um Atom 330 como minha máquina principal (D945GCLF2), executando o Arch Linux - e acabei de fazer este teste:
ttsiod@home ~/tmp
$ wget i.stack.imgur.com/fWwyu.png
--2014-10-29 14:30:08-- http://i.stack.imgur.com/fWwyu.png
Resolving i.stack.imgur.com (i.stack.imgur.com)... 103.31.7.31...
Connecting to i.stack.imgur.com (i.stack.imgur.com)|103.31.7.31|:80...
HTTP request sent, awaiting response... 200 OK
Length: 28576 (28K) [image/png]
Saving to: 'fWwyu.png'
100%[==============================>] 28,576 --.-K/s in 0.06s
2014-10-29 14:30:09 (446 KB/s) - 'fWwyu.png' saved [28576/28576]
ttsiod@home ~/tmp
$ wget http://i.stack.imgur.com/KQiJX.png
--2014-10-29 14:30:16-- http://i.stack.imgur.com/KQiJX.png
Resolving i.stack.imgur.com (i.stack.imgur.com)... 103.31.6.184
Connecting to i.stack.imgur.com (i.stack.imgur.com)|103.31.6.184|:80...
HTTP request sent, awaiting response... 200 OK
Length: 28212 (28K) [image/png]
Saving to: 'KQiJX.png'
100%[==============================>] 28,212 --.-K/s in 0.06s
2014-10-29 14:30:17 (431 KB/s) - 'KQiJX.png' saved [28212/28212]
ttsiod@home ~/tmp
$ identify KQiJX.png
KQiJX.png PNG 640x400 640x400+0+0 8-bit sRGB 28.2KB 0.000u 0:00.000
ttsiod@home ~/tmp
$ time compare -metric PHASH fWwyu.png KQiJX.png null:
0.191664
real 0m1.029s
user 0m2.863s
sys 0m0.177s
ttsiod@home ~/tmp
$ time compare -metric PHASH fWwyu.png fWwyu.png null:
0
real 0m1.027s
user 0m2.843s
sys 0m0.190s
Assim, o tempo que leva para as imagens compare
two 640x400 em um Atom330 é de 1 segundo - muito mais rápido que seus 25 segundos.
Na ausência de uma saída de strace -f
log de sua execução, a única coisa que posso imaginar é ... hardware ruim (talvez um CPU passivamente resfriado que reduz sua velocidade para evitar pegar fogo?) ou binários mal compilados ( por exemplo, não usar extensões MMX / SSE).
BTW, para ter certeza de que o kernel não está diminuindo sua velocidade, faça isso primeiro (como root):
for i in /sys/devices/system/cpu/cpu?/cpufreq/scaling_governor ; do
echo performance > $i
done
Eu, então, tentaria monitorar a temperatura / frequência da CPU durante o teste - eu estou supondo que isso reduza ao esquecimento ...
Por questões de integridade, estas são as versões do kernel e compare
que usei no teste acima:
ttsiod@home ~/tmp
$ egrep '^model.na|^flags' /proc/cpuinfo | sort -u
model name : Intel(R) Atom(TM) CPU 330 @ 1.60GHz
flags : fpu vme de tsc msr pae mce cx8 apic sep
mtrr pge mca cmov pat clflush dts acpi
mmx fxsr sse sse2 ss ht tm pbe syscall
nx lm constant_tsc arch_perfmon pebs
bts nopl aperfmperf pni dtes64 monitor
ds_cpl tm2 ssse3 cx16 xtpr pdcm movbe
lahf_lm dtherm
ttsiod@home ~/tmp
$ uname -a
Linux home 3.16.3-1-ARCH #1 SMP PREEMPT Wed Sep 17 21:54:13
CEST 2014 x86_64 GNU/Linux
ttsiod@home ~/tmp
$ compare --version
Version: ImageMagick 6.8.9-9 Q16 x86_64 2014-10-26 http://www.imagemagick.o
Copyright: Copyright (C) 1999-2014 ImageMagick Studio LLC
Features: DPC HDRI Modules OpenCL OpenMP
Delegates: bzlib cairo fontconfig freetype gslib jng jp2 jpeg lcms lqr ltdl
lzma pangocairo png ps rsvg tiff webp wmf x xml zlib