Entries Tagged 'programação' ↓
September 25th, 2008 — programação
Caros,
Após algum tempo parado nas traduções, arrumei um tempinho e fiz a tradução do primeiro capítulo do livro do subframework de forms do symfony.
Dêem uma olhada:
http://www.symfony-project.org/book/forms/1_1/pt_BR/
Até o fim da semana pretendo traduzir os restantes, se alguém ajudar, sera bem vindo ou mesmo sugerir correções na tradução.
July 25th, 2008 — php, programação
Ontem ( dia 24 de Julho de 2008) é feature freeze para o PHP 5.3, o numero de commits foi alto devido a esse freeze.
Essa versão, mais até mesmo que a 5.2, vai incluir diversas funcionalidades interessantes e a muito
solicitadas, como namespaces e funções lambda. Confira:
- Clousures e lambda functions
Agora podemos fazer algo assim:
<?php
$lambdaFunc = function($name){ echo "Hello " . $name; }
$lambdaFunc(’Lucas’)
- Suporte a Namespaces
- Late Static Binding
- Adicionado suporte ao Error Mode Deprecated para Usuarios.
- Possibilidade para tratar Exceçoes em métodos destrutores
- Adicionada constante __DIR__ (diretorio do arquivo)
- Spl agora é extensão oficial e não pode ser desabilitada
- Inumeras novas interfaces e Iteradores de Array na Spl
- E um sem numero de bugs corrigidos
Esta é sem duvida uma das maiores mudanças no ramo 5.3, somente a adiçao do suporte a namespaces, que estava agendado para o PHP 6, demonstra o impacto que esta versão ira trazer aos desenvolvedores.
Dia 31 de Julho esta planejado lançamento do primeiro alpha, e então lançamento em Setembro/Outubro
Antes de PHP 6, planejado para o primeiro trimestre de 2009, podemos ter uma versão intermediaria, o PHP 5.4, mas isso dependera muito se funcionalidades ou parte delas da 5.3 não forem concluidas em tempo.
June 16th, 2008 — programação
A comunidade symfony brasil esta fazendo um grande esforço de tradução do cookbook da versão 1.1 do symfony.
Os recipes ( receitas ) do cookbook ( livro de receitas) do symfony mostram como fazer tarefas específicas com o framework em tutoriais rápidos.
Você pode olhar os artigos traduzidos aqui
June 12th, 2008 — php, programação, symfony
O desenvolvimento do framework php symfony esta chegando perto do release final.
Atualmente o segundo release candidate esta bastante estável e deve ser também o ultimo antes do release final.
Algumas novidades:
- Independência de Camada de Mapeamento O/.
- Um novo e completo framework de Forms.
- Novas classes de configuração POR projeto que permitem inumeras personalizações.
- Suporte a diferentes formatos de saída ( Json, Html, Iphone, e qualquer outro que você desejar)
- Sistemas de Task totalmente refeito ( retirado pake)
- Subframeworks desacoplados:
Agora todas as classes refereciam a EventDispatcher, removendo depêndencias e flexibilizando o uso.
Nas próximas semanas vou tentar abordar alguns desses itens em artigos completos, se alguém tiver sugestões de qual parte iniciar, deixe nos comentarios.
May 23rd, 2008 — programação
Meu primeiro artigo no blog, uma tradução do otimo post de Reinhold, depois desse espero ter sempre artigos e traduções de qualidade sobre PHP. ( fiz algumas alterações e coloquei links para alguns artigos relacionados)
[UPDATE]
Algumas correções de português, adicionados exemplos.
Obrigado Pablo.
[/UPDATE]
Ai esta: (Thank you Reinhold)
- Se um método pode ser estatico, declare ele estatico. O fator de otimização é 4x+
- echo é mais rapido que print. Veja
- Prefira usar echo com multiplo parametros ao invés de concatenar string
-
echo "parametro um", $var , "outro parametro"
- Set o valor maximo do seus loops FOR antes e não no for
#onde:
-
for($i=0;$i<count($array);$i++)
-
#use:
-
$max_for = count($array);
-
for($i=0;$i<$max_for;$i++)
- Sempre de unset em variaveis que nao serão mais usadas, principalemente grandes arrays.
- Tente não usar métodos magicos, como: __get, __set, __autoload
- require_once() tem custo elevado, prefira include[_once], como alertado pelo Pablo, o include_once é mais custoso que o include.
- Use caminhos completos em includes e requires, o PHP gastara menos tempo resolvendo os caminhos.
- Se você deseja descobrir quando o script começou a ser executado, $_SERVER[’REQUEST_TIME’] é melhor que time()
- Se você puder, use strncasecmp, strpbrk e stripos no lugar de funcões regex
- str_replace é mais rápida que preg_replace, mas strtr é ainda 4x mais rapida que str_replace.
- Se uma função, como troca de string , aceitar tanto arrays quanto caracteres unicos e a sua lista de argumentos não for muito longa, considere escrever algumas vezes o mesmo codigo passando um caracter por vez ao invés de uma linha passando arrays nos argumentos de pesquisa e troca.
- É melhor usar switch/case do que multiplos if’s e else.
- Usar supressão de erros com @ na frente da função é muito lento.
- Ative o mod_deflate do apache( modulo de compressão de resposta).
- Feche as conexões ao banco de dados quando você não for mais usa-lo.
- $row[’id’] é 7x mais rapido que $row[id]
- Mensagens de erros tem custo elevado, desligue-as em produção.
- Não use funcões dentro de loops, como:
-
for ($x=0; $x < count($array); $x)
A função count() é chamada em cada iteração.
- Incrementando uma variavel local é mais rapido.
- Incrementando uma variavel global é 2x mais lento que em uma variavel local.
- Incrementando uma propriedade ( $this->prop++) é 3x mais lento que em uma variavel local.
- Incrementando uma variavel local não definida é de 9x a 10x mais lento do que uma variavel local pré-inicializada.
- Declarando uma variável global sem usá-lo em uma função também atrasa as coisas (com aproximadamente a mesma quantidade incrementando como uma variavel local).O PHP provavelmente faz um checagem para ver se existe a nível global
- A invocação de métodos parece ser independente do número de métodos definidos em uma classe, em uma classe de teste onde se adicionou 10 metódos não teve mudança de performance.
- Métodos em classes derivadas rodam mais rápido do que aqueles definidos na classe base.
- Use ‘ ao invés de ” em strings quando não for preciso usar variaveis ou escapes, assim o PHP não necessita procurar e interpretar esses caracteres especiais.
- Prefira usar HTML puro se for possivel, scripts PHP são servidos de 2x a 10x mais lentos que equivalentes.
- Em cada requisição seus scripts PHP são recompilados, use uma solução de cache, isso pode te dar um ganho de 25 a 100% . Veja
- Quando lidando com string e você precisar verificar se a string possui certo tamanho, você entendidamente desejara usar a função strlen().
Essa função é bastante rapida, já que ela não faz nenhum calculo, apenas retorna o tamanho ja conhecido da string disponivel na estrutura zval(estrutura interna do C usada para guardar variaveis PHP). No entanto como strlen() é uma função ela ainda assim é lenta, porque o PHP precisa fazer varias operações como lowercase e buscas na hashtable, e em seguida executar a dita função.
Algumas vezes você podera aumentar a velocidade do seu código usando um truque com isset().
Exemplo: Digamos que voce tem :
if (strlen($foo) < 5) { echo “Foo is too short”; }
-
# versus
-
if (!isset($foo{5})) { echo "Foo is too short"; }
Usando isset() sera mais rapido que strlen(), porque diferente de strlen(), isset() é um construtor de linguagem e não uma função, isso quer dizer que a sua execução não necessita busca na hashtable nem uso de lowercase. Virtualmente você não sobrecarga no código atual para determinar o tamanho da string.
- Quando incrementando ou decrementando o valor de uma variavel, $i++ normalmente é mais lenta que ++$i. Isso é especifico para PHP, ou seja, não se aplica a outras linguagens, não sai por ai modificando seu código java ou C. Isso se da porque $i++ usa 4 opcodes enquanto ++$i precisa de somente 3.
- Nem tudo precisa ser OOP, gera muita sobrecarga, cada chamada de método e objeto consome um monte de memória.
- Não implemente cada estrutura de dados como uma classe, arrays são utéis também.
- Não divida muito os métodos, pense bem cada código que sera reusado.
- Você sempre podera dividir o código no futuro, caso necessario.
- Faça uso das incontaveis funções pré-definidas.
- Se você tem muito tempo consumido por funções em seu código, considere escreva-las como extensões C.
- Faça Profile do seu código. Um profiler mostra quanto tempo cada parte do seu código consome. A extensão Xdebug ja contém um profiler.
- Excelente artigo sobre otimização PHP de John Lim (inglês)