venerdì 7 maggio 2010

I misteri di Sunspider.

Non credo che il benchmark Sunspider necessiti di presentazioni. E' stato ormai preso come riferimento un po' da tutti i produttori di browser.

Dato che anche Microsoft ha "aderito" a questa corsa a chi ce l'ha piu' lung... veloce, ho provato a fare un confronto tra IE9 tech preview 2 e Opera 10.53 e Chrome 5.0.375.29.

Ma l'argomento del post non e' il confronto tra questi browser. Quello che mi ha lasciato un po' interdetto e' il comportamento di Sunspider su diverse macchine/sistemi operativi.

La prima cosa che ho notato e' che i risultati hanno una variabilita' notevole a seconda del sistema su cui gira il test.

Sul desktop con Windows 7 (quad core Q9450 2.66 GHz) i risultati sono entro una variabilita' inferiore al 5% e il risultato migliore che ho ottenuto e' stato di 399 ms, mentre mediamente ottengo 405 ms.

Sul MacBook con Windows 7 (dual core P8400 2.4 GHz) il migliore risultato e' stato di 634 ms e una varibilita' maggiore del 10% (mediamente ottengo 750 ms). 634 ms potrebbe anche sembrare accettabile date le diverse caratteristiche della CPU, ma come vedremo non e' cosi'.

In realta' il Sunspider e' composto da 9 gruppi di test che a loro volta hanno sotto aere per un totale di 26 test individuali. La prima cosa che volevo capire era quanti di questi sfruttano davvero la presenza del multicore, cosi' ho eseguito il test all'interno di una virtual machine del desktop. La VM so per certo che usa un singolo core e infatti dei 26 test ce ne sono due che hanno dato un risultato tra le 3 e le 4 volte peggiore rispetto al quad core. Tutti gli altri invece sono rimasti in un range di peggioramento tra lo 0% e il 10%.

E fino qua tutto bene, il problema e' che per questo tipo di test che esegue una quantita' sostanzialmente irrisoria di codice su una quantita' di dati altrettanto irrisoria, certe caratteristiche delle CPU non vengono sfruttate, col risultato che anche un dual core per portatile dovrebbe tenere testa ad un quad core. Ma nel caso del MacBook non e' cosi', mi aspettavo un risultato decisamente migliore di 634 ms. E soprattutto non mi spiego come mai il peggioramento rispetto al quad core sia equidistribuito su tutti i 26 test e non abbia invece una punta di peggioramento sui due test che sfruttano il multi core.

Per farvi un esempio: Super PI che e' mono thread, sul MacBook paga circa un 10%-15% di peggioramento rispetto al quad core, non certo il 50% o piu' come avviene per Sunspider.

Ho voluto provare sul Mac anche XP, pensando che magari fosse un problema di incompatibilita' tra Windows 7 e Boot Camp... risultato medio: 1.000 ms!
Ovvero molto peggio rispetto a Windows 7 (anche questo fatto non ha una spiegazione chiara).

La contro prova che Sunspider su un dual core dovrebbe ottenere risultati migliori l'ho avuta confrontando il risultato di Sunspider su OS X: sul MacBook ho ottenuto 426 che e' compatibile con le aspettative dopo aver letto su Arstechnica che su un Mac Pro quad core avevano ottenuto 389.

Per altro ho provato su uno Xeon 5355 2.66 GHz con Windows Server 2003 R2 ed ho ottenuto 330 che e' in linea con i dati di ArsTechnica (puo' essere che il Mac Pro da loro usato abbia una frequenza di clock un pelo inferiore).

Ho anche provato a testare sul MacBook la stessa VM provata sul desktop, e il decremento di prestazioni e' stato anche in questo caso inaspettato: miglior risultato 1.695 ms con medie intorno ai 2.000 ms e un risultato persino sopra ai 3.000 ms. It doesn't make sense!

Perche' sul quad core da macchina reale a virtuale si paga solo sui due test delle date, mentre sul Mac si paga in modo cosi' vistoso su tutti i test?

Perche' sul quadcore il delta tra varie eseguzioni del test e' limitato a meno del 5% mentre sul Mac si arriva a percentuali che toccano il 20%?

Considerate che il test di suo non impegna tantissimo la CPU, quindi non e' che altri processi possano alterare in modo significativo il risultato.

Che sia un baco presente in Sunspider e che si evidenzia solo con certi hardware/sistemi operativi? Che sia un qualche problema di Opera? Che sia un problema del sistema operativo? Che sia un problema di Boot Camp?

Per ora escludo sia un problema legato a Opera, ho provato con Chrome e la differenza % tra quad core e dual core e' compatibile coi risultati di Opera: 349 ms sul desktop e 686 ms sul Mac.

Sul desktop avrei voluto provare anche sotto Ubuntu 10.04 ma Opera non ha ancora rilasciato la 10.53, appena esce provo. Intanto ho provato Chrome che ha ottenuto 399 ms e sotto Windows 7 349 ms, valori compatibili con la normale varianza d'errore di questo tipo di test e col fatto che sicuramente qualcosina cambia tra Windows e Linux.

Se avete un dual core sarei curioso di sapere quale sia il miglior risultato che ottenete (specificate anche la frequenza di clock della CPU).

Per adesso Sunspider conferma quello che ho sempre pensato: ci sono le bugie, le grandi bugie e i benchmark ;)


Aggiornamento: neanche finito di pubblicare il post che dopo una altro giro di una decina di eseguizioni del test sul Mac e' spuntato un inaspettato 499 ms. Mentre tutti gli altri si erano attestati da 640 ms in su'.

10 commenti:

  1. Considerato che il tuo Dual Core e' il 20% piu' lento di quello del Mac, il risultato che hai ottenuto con Opera e' migliore di quello che ho ottenuto io. Se poi consideriamo che i 499 ms che ho ottenuto io sono un episodio isolatissimo comparso dopo svariate decine di run e che la norma era intorno ai 650 ms... si rafforza l'ipotesi che ci sia qualcosa che non va tra Windows 7 e il Mac...

    RispondiElimina
  2. MacBook 5,1: Linux gentoo 2.6.32-gentoo-r8 #1 SMP PREEMPT Thu May 6 16:15:21 CEST 2010 i686 Intel(R) Core(TM)2 Duo CPU P7350 @ 2.00GHz GenuineIntel GNU/Linux

    CFLAGS="-march=core2 -O2 -msse4.1 -pipe -fomit-frame-pointer"
    CXXFLAGS="${CFLAGS}"
    LDFLAGS="-Wl,--as-needed"

    Chrome (5.0.375.29):
    Total: 452.4ms +/- 2.2%

    Firefox (3.6.3) [non compilato con quelle ottimizzazione ma preso dalle build di mozilla]:
    Total: 1406.4ms +/- 1.6%

    Saluti.

    RispondiElimina
  3. Ti posto qualche risultato da Ubuntu.

    Ubuntu 10.04 x86 (kernel Linux 2.6.32-22)

    Sony Vaio FZ21M
    Intel Core 2 Duo 2 GHz
    2 GB RAM

    Midori 0.2.4 (WebKit)

    Total: 589.8ms +/- 14.6%

    Epiphany 2.30.2 (WebKit)

    Total: 664.4ms +/- 4.2%

    Firefox 3.6.3 (Gecko)


    Total: 1300.4ms +/- 4.6%

    Chromium 5.0.342.9 (WebKit)

    Total: 492.6ms +/- 4.5%

    Per ora, non ho potuto installare Opera 10.53 Beta 1, i server di Opera sembrano pigri stasera.

    Domani provo un po' da 7.

    RispondiElimina
  4. In quest'articolo
    http://www.winsupersite.com/alt/webkit_lie.asp
    Paul Thurrot spiega esaurientemente come tutte queste forche caudine di test su webkit siano enormi e colossali panzane e non servano assolutamante a nulla per l'esperienza di uso quotidiano del web.

    Se ci aggiungiamo, come fa notare e come sappiamo, che browser con webkit rendono le pagine diversamente tra loro, ne otteniamo un quadro sostanzialmente ridicolo (lo è).
    Io mi tengo IE e aspetto, con calma, l'uscita della versione 9. :-)

    RispondiElimina
  5. Nickel... siamo d'accordo che questi benchmark vanno presi per quello che sono, qui per altro sottolineavo come neppure usando lo stesso browser si ottengono risultati coerenti ;)

    RispondiElimina
  6. Ecco qua qualche altro risultato.

    Windows 7 Home Premium N x86

    Vaio FZ21M, come sopra.

    Internet Explorer 9 Technical Preview 2

    Total: 688.0ms +/- 2.8%

    Firefox 3.7 Alpha 4

    Total: 869.6ms +/- 3.0%

    Opera 10.53

    Total: 442.2ms +/- 5.1%

    RispondiElimina
  7. Grazie floo, i risultati che hai riportato sono coerenti con le performance attese sul tuo hardware.

    A questo punto direi che e' chiaro che il problema che ho riscontrato e' legato a qualche incompatibilita' tra Windows 7 e il Mac.

    RispondiElimina
  8. Non me ne stupisco. D'altronde, hanno interesse a far andare male Windows sui loro computer... ;)

    RispondiElimina
  9. Per una volta credo che non sia un problema voluto, mentre capisco che abbiano fatto apposta a tenere sempre accesa la seconda GPU dei nuovi MacBook Pro, in questo caso il problema e' davvero particolare e per di piu' con effetti peggiori su XP rispetto a Win7. Se fosse una cosa pianificata a tavolino probabilmente avrebbero cercato di mettere Win7 in cattiva luce rispetto a XP e non viceversa ;)

    RispondiElimina
  10. Beh, dai, mettere in cattiva luce 7 rispetto a XP sarebbe stato il colmo :D Troppo visibile, queste cose le si fanno in maniera più subdola. Ad ogni modo, probabile sia un problema derivato o da Boot Camp o da driver.

    RispondiElimina