Pergunta

Acabei de ouvir que o iPhone não pode fazer dupla nativamente, assim, tornando-os muito mais lento que o flutuador regular.

Isso é verdade? Evidências?

Estou muito interessado na questão, porque o meu programa precisa de cálculos de alta precisão, e eu vou ter que comprometer a velocidade.

Foi útil?

Solução

O iPhone pode fazer as duas aritmética de precisão simples e dupla em hardware. Por 1176 (iPhone original e iPhone3G), eles operam em aproximadamente a mesma velocidade, mas você pode ajustar os dados mais precisão simples nos caches. Por Cortex-A8 (iPhone3GS, iPhone4 e iPad), aritmética de precisão simples é feito na unidade NEON vez de VFP, e é substancialmente mais rápido.

Certifique-se de desligar o modo de polegar em suas configurações de compilação para ARMv6 se você estiver fazendo intensivo de computação de ponto flutuante.

Outras dicas

Esta apresentação de slides dá uma visão em por que não há bom ponto flutuante e porque é que há (unidade de ponto do vetor flutuante). Aparentemente, é importante que você verifique o "modo polegar", que influencia ou não suporte ponto flutuante está ligado. Isso nem sempre é uma melhoria. Ele mostra como encontrar as instruções corretas no código de montagem.

Depende também qual versão do telefone você deseja executar seu código. O mais recente parece "mais capaz" em fazer matemática de ponto flutuante.

EDIT: aqui está uma leitura interessante sobre flutuantes otimizações de ponto no braço com VFP e NEON SSE

O manual ARM1176JZF-S diz que ele suporta dupla precisão números de ponto flutuante. Você deve estar em boa forma. Aqui está um ligação a documentação PDF. iPhones posteriores são chips Cortex, e certamente não deve ser menos capaz.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top