Pergunta

Para intensa números impressionantes que eu estou pensando em usar ponto fixo em vez de ponto flutuante. Claro que vai importa quantos bytes o tipo de ponto fixo é em tamanho, no que CPU que vai ser executado, se eu posso usar (para Intel) a MMX ou SSE ou qualquer coisas novas surgem ...

Eu estou querendo saber se estes dias, quando flutuando corridas ponto mais rápido do que nunca, é sempre vale a pena considerar ponto fixo? Existem regras gerais do polegar onde podemos dizer que vai importa mais do que uns poucos por cento? Qual é a visão geral de 35.000 pés de desempenho numérica? (BTW, eu estou assumindo uma CPU geral, como encontrado na maioria dos computadores, não DSP ou sistemas embarcados especializados.)

Foi útil?

Solução

É ainda vale a pena. ponto flutuante é mais rápido do que no passado, mas de ponto fixo também é. E fixa ainda é o único caminho a percorrer se você se preocupa com precisão para além disso garantida pelo IEEE 754.

Outras dicas

Em situações em que você está lidando com grandes quantidades de dados, ponto fixo pode ser duas vezes mais eficiente de memória, por exemplo, um número inteiro de quatro bytes de comprimento, em oposição a um oito byte duplo. Uma técnica frequentemente utilizados em grandes conjuntos de dados geográficos é reduzir todos os dados para uma origem comum, de tal modo que os bits mais significativos podem ser eliminados, e o trabalho com números inteiros de ponto fixo para o resto. ponto flutuante só é importante se o ponto é que realmente flutuar, ou seja, você está lidando com uma gama muito ampla de números de precisão muito elevada.

Outra boa razão para usar decimal fixo é que o arredondamento é muito mais simples e previsível. A maioria dos usos de software financeiro ponto decimais de precisão arbitrária fixo com meia-even arredondamento para representar dinheiro.

A sua quase sempre mais rápido usar ponto fixo (experiência de x86, Pentium, 68k e ARM). Ele pode, no entanto, também depende do tipo de aplicação. Para gráficos de programação (um dos meus principais usos do ponto fixo) Eu tenho sido capaz de otimizar o código usando tabelas pré-construídos cosseno, tabelas etc. log, mas também as operações matemáticas básicas também provaram mais rápido.

Um comentário sobre software financeiro. Foi disse numa resposta anterior que ponto fixo é útil para cálculos financeiros. Na minha própria experiência (desenvolvimento de grandes sistemas de gestão de tesouraria e uma vasta experiência de processamento de cartão de crédito) Eu não usaria ponto fixo. Você vai ter erros de arredondamento usando flutuante ou ponto fixo. Nós sempre usar quantidades inteiras para representar valores monetários, contando o mínimo possível (1c para o Euro ou dólar). Este garantir que não haja montantes parciais são sempre perdido. Ao fazer cálculos complexos valores são convertidos em duplas, de aplicação específica regras de arredondamento são aplicadas e os resultados estão de volta convertido para números inteiros.

Use fixo-ponto quando o hardware não suporta de ponto flutuante ou a implementação de hardware é uma porcaria.

Também tem cuidado ao fazer aulas para ele. Algo que você acha que seria rápido poderia realmente vir a ser um cão quando se trata de criação de perfis devido a (des) cópias necessárias de classes. Essa é outra questão para outro momento no entanto.

Outra razão para usar ponto fixo é que os dispositivos ARM, como telefones celulares e tablets, a falta de FPU (pelo menos muitos deles).

Para o desenvolvimento de aplicações em tempo real, faz sentido para funções otimizar usando aritmética de ponto fixo. Há implementações de FFT (Fast Fourier Transform), muito importan para ilustrações, que a base de suas melhorias na eficiência de confiar em aritmética de ponto flutuante.

Uma vez que você estiver usando uma CPU de propósito geral, gostaria de sugerir não usando ponto fixo, a menos que o desempenho é tão crítico para a sua aplicação que você tem que contar cada tic. O trabalho de implementação de ponto fixo, e lidar com questões como o estouro não é apenas vale a pena, quando você tem uma CPU, que vai fazer isso por você.

IMHO, ponto fixo só é necessário quando você estiver usando um DSP sem suporte de hardware para operações de ponto flutuante.

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