Pergunta

Agora eu pretendo testar em 32 bits, 64 bits, Windows XP Home, Windows XP Pro, Windows Vista Home Basic, Windows Vista Ultimate, Windows 7 Home Basic e Windows 7 Ultimate ... tudo com oMais recente service pack.

No entanto, agora estou me perguntando se vale a pena testar tanto a AMD quanto a Intel para todos os cenários listados acima ou seria uma perda de tempo?

Nota: Este é um aplicativo de segurança para usuários médios diários.

Foi útil?

Solução

Meu sentimento é que isso só seria valioso se você tivesse muita linguagem de montagem codificada por mão ou algum tipo de timings incrivelmente apertados (que você não vai se encontrar com aquela seleção de sistema operacional).

Se você estiver usando compiladores comerciais off-the-prateleira, você pode ser razoavelmente certo que eles vão gerar código que é executado em todos os processadores normais.

Claro, ninguém poderia provar que eles não precisavam testar em uma determinada plataforma, mas eu acho que há causas maiores de diferença de plataforma se preocupar do que a marca da CPU (todas as várias permutações multi-core / hyperthreading,Por exemplo, o que pode expor todos os seus bugs de código multithread de maneiras diferentes)

Outras dicas

Só se você estiver programando em montagem e use os conjuntos de instruções específicos do Vender.Mas desde que a AMD e a Intel têm acordos de licenciamento cruzados, este é mais uma questão histórica do que uma atual.

Em todos os outros casos (por exemplo, usando uma linguagem de alto nível), é o trabalho dos escritores do compilador para garantir que o código seja compatível com X86 e seja executado em todas as CPU.

Ah, e exceto o FDIV Bug Os fornecedores de processadores geralmente não têm erros. .

Eu acho que você está olhando na direção errada para testar cenários.

Sim, é possível que seu código funcione na Intel, mas não na AMD, ou no Windows Vista Home, mas não no Windows Vista Professional. Mas a menos que você esteja fazendo algo muito intimamente ligado à programação de baixo nível no primeiro caso, ou a detalhes da implementação do sistema operacional no segundo, as chances são pequenas. Você poderia dizer que nunca é demais testar todos os cenários concebíveis. Mas na vida real deve haver algum limite para os recursos disponíveis para testes. O teste em diferentes processadores ou diferentes OS é, na maioria dos casos, não testando seu programa, ele está testando o compilador, o sistema operacional ou o processador. Quanto tempo você tem que poupar para testar o trabalho de outras pessoas? Eu acho que seu tempo seria melhor gasto testando mais cenários dentro do seu próprio código. Você não dá muito detalhes sobre o que o seu aplicativo faz, mas apenas para pegar um dos meus próprios exemplos, seria muito mais produtivo passar um teste de dia vendendo produtos Nossa própria empresa faz com versus produtos que revendemos de outros fabricantes, ou testando regras fiscais de vendas para diferentes estados, ou qualquer outra coisa.

Na prática, eu raramente testei a implantação no Windows versus implantando no Linux, não se importa de diferentes versões do Windows, e raramente ser queimado nisso.

Se eu estava escrevendo motoristas de baixo nível ou alguns, essa seria uma história diferente. Mas aplicativos normais? Não perca seu tempo.

certamente soa como seria uma perda de tempo para mim - qual idioma (s) são seus programas escritos?

Eu diria não.A menos que você esteja escrevendo sua inscrição no Assembler, você deve estar longe o suficiente do processador para não precisar se preocupar com diferenças.Os processadores apoiarão o sistema operacional Windows cujas API são o que você está interrompendo (dependendo do idioma).Se você estiver usando o .NET, o único problema forseable que você terá é se você estiver usando uma versão da estrutura que essas plataformas não suportarem.Dado que eles são todos XP ou mais tarde, você deve estar bem.Se você quiser se preocupar com algo, certifique-se de que sua inscrição tocará bem com o modelo de segurança Vista e posterior.

A questão é provavelmente "o que você está testando".É improvável que qualquer teste esteja testando algo que seria potencialmente diferente entre as plataformas de hardware AMD e Intel.Diferenças podem ser esperadas no nível do motorista, mas você não parece planejar testar seu software para cada bits existente de hardware de PC disponível ao redor.Provavelmente, haveria muito mais diferenças entre diferentes níveis de pagamento do Windows do que entre os processadores AMD e Intel.

Suponho que seja possível que exista alguma funcionalidade em seu código que (se você conhece ou não) aproveita alguma processamento / otimização em um ou outro que pode ter um efeito sério no resultado.Palavra-chave Possível.

Eu diria em geral, é improvável que você tenha que se preocupar com isso.Se você vai fazer isso em várias máquinas de qualquer maneira, misture-a.Mas eu não me estressaria sobre isso.

Eu nunca executaria todos os meus testes de regressão em ambos os AMD e Intel, a menos que eu tenha corrigido especificamente um problema exclusivo para um ou um.É isso que é o teste de regressão.

Teste de unidade em outra mão ... Eu não anteciparia alguma diferença.Então, novamente, eu não iria incomodaria os testes de unidade em ambos até que eu tivesse visto um problema específico para AMD ou Intel.

Se você confiar em resultados de ponto flutuante precisos / consistentes, então sim, definitivamente.

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