2009-10-26 16 views
47

Ho appena sentito che l'iphone non può fare il doppio in modo nativo, rendendo così molto più lento il normale float.Double vs float su iPhone

È vero? Prova?

Sono molto interessato al problema perché il mio programma richiede calcoli di alta precisione e dovrò scendere a compromessi sulla velocità.

risposta

71

L'iPhone può fare aritmetica sia singola sia doppia precisione nell'hardware. Sul 1176 (iPhone e iPhone3G originali), funzionano all'incirca alla stessa velocità, anche se è possibile inserire più dati di precisione singola nelle cache. Su Cortex-A8 (iPhone3GS, iPhone4 e iPad), l'aritmetica a precisione singola viene eseguita sull'unità NEON anziché su VFP ed è sostanzialmente più veloce.

Assicurarsi di disattivare la modalità pollice nelle impostazioni di compilazione per armv6 se si sta eseguendo un calcolo a virgola mobile intensivo.

+0

Sono curioso di sapere dove hai ottenuto le informazioni. –

+1

@ Ben: forse lo sapeva, ma se controlli il mio post, i link forniscono esattamente quelle informazioni e Google restituisce molti più hit su questo argomento. – Abel

+24

I manuali di riferimento dell'architettura (disponibili gratuitamente da ARM in questo caso), un disassemblatore (otool) e cicli temporali accuratamente scritti bastano per ottenere queste informazioni su praticamente qualsiasi architettura. –

10

Il manuale ARM1176JZF-S afferma che supporta numeri in virgola mobile a doppia precisione. Dovresti essere in buona forma. Ecco uno link alla documentazione PDF. Gli iPhone successivi sono chip Cortex e certamente non dovrebbero essere meno capaci.

12

This slide show fornisce informazioni sul motivo per cui non vi è un buon punto in virgola mobile e perché esiste (l'unità in virgola mobile vettoriale). Apparentemente, è importante controllare la "modalità pollice" che influenza se il supporto a virgola mobile è attivo o no. Questo non è sempre un miglioramento. Mostra come trovare le giuste istruzioni nel codice assembly.

Dipende anche da what version of the phone che si desidera eseguire il codice. La più recente sembra "più capace" nel fare matematica in virgola mobile.

MODIFICA: ecco una lettura interessante su floating point optimizations su ARM con VFP e NEON SSE.

Problemi correlati