Um balcão único para boas práticas de codificação e dicas de desempenho? [fechadas]

5
Embora essa possa ser uma pergunta muito subjetiva, eu queria saber se há um lugar (ou muitos lugares) na web onde se pode ler sobre boas dicas de codificação e desempenho para diferentes idiomas e como eles podem se comparar com os outros?

Por exemplo, em AS3, é mais rápido multiplicar do que dividir. Isso é o mesmo para JS? Que outras dicas existem para realmente tornar nosso código mais rápido? E onde estão essas dicas?

    
por Ahmed Nuaman 08.11.2011 / 11:44
fonte

4 respostas

4

A verdadeira questão que você deve se fazer primeiro é: "Eu já deveria estar pensando em performance?"

Normalmente, você deve se preocupar apenas com o desempenho quando tiver problemas de desempenho. Aqui está uma das minhas citações favoritas:

It is easier to optimize correct code than to correct optimized code. - Bill Harlan

Para problemas de desempenho causados por algoritmos ineficientes (ou discussões amadoras irrelevantes para um projeto real) você está melhor aqui em programadores. Para problemas de desempenho específicos do idioma, é melhor ter estouro de pilha .

E para responder à sua pergunta real: Se um site que lista estatísticas de desempenho para cada idioma (recursos de comparação) existisse, como você o usaria? Você escolheria um idioma sobre o outro porque faz chamadas virtuais mais rápidas?

    
por 08.11.2011 / 14:47
fonte
2

Acho que este website, por exemplo, Programmers.StackExchange , é basicamente voltado apenas para esses tipos de problemas e questões. Aqui está um trecho da página FAQ : -

Programmers — Stack Exchange is a site for professional programmers who are interested in getting expert answers on conceptual questions about software development. If you have a question about…

  • algorithm and data structure concepts
  • design patterns
  • developer testing
  • development methodologies
  • freelancing and business concerns
  • quality assurance
  • software architecture
  • software engineering
  • software licensing
    
por 08.11.2011 / 13:37
fonte
1

Com base na falta de respostas reais, você pode querer criar o site que estava procurando. É bastante fácil fazer as comparações simples de desempenho que você descreveu e colocá-las em um blog. Se você quiser que outras pessoas forneçam informações, incentive o Stack Exchange a adicionar um site performance.StackExchange.com ou você mesmo poderá criar um site semelhante.

    
por 08.11.2011 / 19:14
fonte
0

Você está recebendo ótimas respostas aqui. Os fóruns da pilha * são uma excelente fonte de informação.

Embora cada idioma tenha truques de desempenho, a chave para um bom desempenho é a simplicidade do design. Então, após o software está sendo executado (não quando você está codificando), lida com o desempenho. É improdutivo pensar em código e adivinhar se você deve usar o truque X no local Y. Deixe o programa em execução dizer-lhe o que corrigir. (Todo mundo sabe disso, mas eles ainda usam o método pronto para disparar.) Se você aprender esta técnica para diagnóstico de desempenho, você achará útil, assim como muitos outros.

Basicamente, você interrompe o programa aleatoriamente várias vezes e, a cada vez, entende em detalhes o que está fazendo. Não pule Entenda o que está fazendo e por quê.

Se você o vir fazendo algo duas vezes, não importa como você o descreve , essa atividade está levando um tempo significativo. Quanto mais cedo você perceber, mais importante será.

Tecnicamente, se alguma atividade estiver consumindo fração p de tempo, o número médio de amostras necessárias antes de vê-las duas vezes é 2 / p . Então, se p é 20%, em média, serão necessárias 10 amostras para vê-lo duas vezes. (Tecnicamente, isso vem da distribuição binomial negativa, em que se uma moeda tiver justiça p , o número de caudas que você obterá antes das cabeças x é, em média, x (1-p) / p .)

O ponto desta abordagem é que, em vez de medir várias coisas e esperar restringir algum código de problema, ele mostra o problema com detalhes claros, mesmo que não esteja localizado em uma parte específica do código. Pode encontrar problemas que você não consegue encontrar de outra maneira.

    
por 08.11.2011 / 19:04
fonte