[EP15] Dijkstra e unit test

Re: [EP15] Dijkstra e unit test

por José Coelho de Pina -
Número de respostas: 0

Ois,

será que a diferença no tempo de execução se deve só ao hardware ou existe algum macete pra otimizar ainda mais o código?

Legal você ter levantado essa questão.

No computador que estou agora tenho duas versões do EP15.
Um delas da os tempos que estão no enunciado e que usa o algoritmo de busca em caminho mínimo em um digrafo acíclico (examina os pixels em ordem topológica). Neste computador com esse algoritmo obtenho:

    % java ResizeDemo seamCarving/HJocean.png 200 100
    768-by-432 image
    new image size is 568 columns by 332 rows
    Resizing time: 13.921 seconds.

Já, usando o algoritmo de Dijkstra, como você devem fazer.
Dijkstra não tira proveito do digrafo dos pixels ser acíclico.
Os pixels são examinados na ordem de distâncias a partir da borda.
Usando esse algoritmo obtenho: 

    % java ResizeDemo seamCarving/HJocean.png 200 100 
    768-by-432 image
    new image size is 568 columns by 332 rows
    Resizing time: 36.469 seconds. 

Em ambas implementações o digrafo é implícito, como sugere o checklist.

Acho que tudo ajuda.
O algoritmo e o hardware.

O computador que estou usando:

    % more /proc/meminfo 
    MemTotal:        4008052 kB
    [...]

    % more /proc/cpuinfo
    model name	: AMD FX(tm)-4300 Quad-Core Processor
    cpu MHz		: 1400.000
    cache size	: 2048 KB