Pergunta

Como faço para declarar os tipos dos parâmetros, a fim de contornar a verificação de tipo?

Como faço para otimizar a velocidade para dizer ao compilador para executar a função tão rápido quanto possível, como (velocidade optimize (segurança 0))?

Como posso fazer uma função inline no Esquema?

Como posso usar uma representação desemoldurado de um objeto de dados?

E, finalmente, são qualquer um destes importante ou necessário? Posso confiar no meu compilador para fazer essas otimizações?

graças, kunjaan.

Foi útil?

Solução

  1. Você não pode fazer qualquer um destes em qualquer forma portátil.
  2. Você pode obter uma "espécie de" inlining usando macros, mas é quase sempre a tentar fazer isso. As pessoas que escrevem Esquema (ou qualquer outra língua) compiladores são geralmente muito melhor do que você para decidir quando é melhor para inline uma função.
  3. Você não pode fazer valores desemoldurado; alguns compiladores Esquema vai fazer isso como uma otimização, mas não em qualquer forma que seja visível (porque é uma otimização - por isso deve preservar a semântica).
  4. Quanto à sua última pergunta, uma resposta é muito subjetiva. Algumas pessoas não conseguem dormir à noite sem saber exatamente quantos ciclos de CPU alguns usos de função. Algumas pessoas não se importam e são muito bem com confiando que o compilador coisas otimizar razoavelmente bem. Pelo menos nas fases em que você está mais de um estudante da língua e menos de um implementador, é melhor ficar com o último grupo.

Outras dicas

Se você quer ajudar o compilador, considerar a redução definições de alto nível, sempre que possível. Se o compilador vê uma função de nível superior, é muito difícil para ele adivinhar como essa função pode ser usado ou modificado pelo programa. Se uma função é definida no âmbito de uma função que usa-lo, o trabalho do compilador torna-se muito mais simples.

Há uma seção sobre isso no manual do Esquema Chez: http://www.scheme.com/csug7/use.html# ./use:h4

Aparentemente Chez é uma das implementações mais rápidas Esquema existe. Se ele precisa desse tipo de "orientação" para fazer boas otimizações, eu suspeito que outras implementações não pode viver sem ele quer (ou eles simplesmente ignorá-lo todos juntos).

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