Domanda

Ho appena sentito che l'iPhone non può fare il doppio nativamente, rendendoli molto più lenti di quel normale float.

È vero? La prova?

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

È stato utile?

Soluzione

L'iPhone può eseguire sia l'aritmetica di precisione singola che doppia in hardware. Sull'1176 (iPhone e iPhone3G originali), funzionano approssimativamente alla stessa velocità, sebbene sia possibile inserire più dati a 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.

Assicurati di disattivare la modalità pollice nelle impostazioni di compilazione per armv6 se stai eseguendo un calcolo intensivo in virgola mobile.

Altri suggerimenti

Questa presentazione fornisce informazioni sul motivo per cui non esiste 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 in virgola mobile è attivo o meno. Questo non è sempre un miglioramento. Mostra come trovare le istruzioni giuste nel codice assembly.

Dipende anche da quale versione del telefono desideri eseguire il tuo codice. Il più recente sembra "più capace" nel fare matematica a virgola mobile.

EDIT: ecco una lettura interessante su ottimizzazioni in virgola mobile sul ARM con VFP e NEON SSE.

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top