Pergunta

Preciso escrever software que fará muita matemática. Principalmente, será a multiplicação da matriz com números inteiros para calcular o DCT. Quão mais rápido devo esperar que o código seja executado no nativo C em comparação com o VB .NET? Fator de 2, fator de 10, fator de 1000 ...? Alguém já tentou e coletou estatísticas sobre isso?

Foi útil?

Solução

Você pode adicionar um novo atributo de imagem slideshow_image para o conjunto de atributo de produtos. Este post Na Pixafy explica como.Isso permitiria que você recupere todas as imagens para a coleção de produtos SlideChow por procurar as imagens no atributo slideshow_image .

Outras dicas

O código .NET é compilado ao código nativo antes da execução, portanto, não deve ser mais lento que o código nativo em geral. Eu esperaria um fator <10.

Além disso, as técnicas de otimização adaptativa perfilam o código à medida que é executado, obtendo mais informações do que um compilador estático típico. Portanto, o JIT pode tomar decisões mais informadas para outras otimizações

VB é 93,7% tão rápido quanto C. Se Você escolhe o cenário certo.

Na verdade, se o seu 'nativo C' incluir chamadas regulares para Malloc () e Free (), qualquer tipo de linguagem coletada de garagem como o VB.NET vai literalmente correr círculos ao seu redor. O GC pode ser 10x mais rápido que os mallocs em seus loops internos.

Se você quebrar e usar C, tente reutilizar estruturas que você declarou apenas uma vez em vez de fazer novas, para evitar esse problema. Isso pode ser benéfico, mesmo em VB, se sua solução se prender a ela. No entanto, será mais difícil programar e o GC é muito rápido.

No que diz respeito às verificações de limites/transbordamento, se a velocidade for importante e os testes revelaram que eles não acontecem, e você não está arriscando vida ou milhões de um erro ou encerramento, eles são uma perda de tempo. Mas se você não conseguir se livrar deles, seu tempo provavelmente é ainda mais valioso em um idioma com o qual você pode programar mais rapidamente.

Se você espera tamanho e uso graves, vale a pena dividir a tarefa com um programa de controle e armazenar as 'definições de tarefas' alocadas em um diretório compartilhado com um arquivo por solucionador de tarefa ou um banco de dados. Em seguida, você pode executar um solucionador por processador (2 por HT CPU) ou computadores de rede. Seja cansado das estruturas da fila-é difícil de 'mark-e-get-data-não-não-tomado atômico'. Você sabe quantos solucionadores de tarefas você começará. Fiz isso com um utilitário de imagem que desenvolvo, foi muito mais fácil do que o esperado e ele creme a versão anterior. Além disso, se você usar múltiplos processos Com um domínio de problema adequadamente dividível, você evita a carga de programação leve a significativa do multithreading. Ou convencer seus colegas de trabalho de que seus aparelhos culpados estão no lugar certo. Paz.

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