Benchmark de métodos de atribuição do PHP

You are able to see this post in english too.

Olá!

Este post mostrará um benchmarking entre as formas de atribuição suportadas pelo PHP:
a) Atribuição simples (ex.: $j = $j + 1);
b) Atribuição com associação à direita (ex.: $j += 1);
c) Atribuição não associativa (ex.: $j++);

O material de teste:

  • Máquina: Dell Optiplex 755;
  • Ambiente: Bash, sem X. Sistema de arquivos Ext4;
  • uname -a:
    Linux optiplex755 2.6.34.8-68.fc13.x86_64 #1 SMP Thu Feb 17 15:03:58 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux

  • php -v:
    PHP 5.3.5 (cli) (built: Jan 7 2011 18:46:32)
    Copyright (c) 1997-2010 The PHP Group
    Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
    with Xdebug v2.1.0, Copyright (c) 2002-2010, by Derick Rethans

Todos os arquivos do teste podem ser baixados aqui. A metodologia aplicada foi:
1) Desligar a máquina por 1 minuto;
2) No bash: for i in `seq 1 100`; do echo $i && php t1.php >> t1_output01.log; done;
3) Desligar a máquina por mais 1 minuto;
4) No bash: for i in `seq 1 100`; do echo $i && php t1.php >> t1_output02.log; done;
5) Desligar a máquina novamente, por mais 1 minuto;
6) No bash: for i in `seq 1 100`; do echo $i && php t1.php >> t1_output03.log; done;

Repetiu-se as ações acima para os arquivos t2.php e t3.php.

Os arquivos t1.php, t2.php e t3.php possuem cada um três arquivos de log com seus tempos de execução. Os 300 resultados de cada script foram então ordenados de forma ascendente pelo tempo de execução e descartou-se os 100 melhores e os 100 piores resultados de cada um, ficando então somente com os 100 melhores tempos médios de execução.

O resultado:

Gráfico - Comparando os tempos de execução

Gráfico - Comparando os tempos de execução

O gráfico mostra que utilizar o método “($j += 1)” ou o método “($j++)” pode lhe render até 0.02 segundo de vantagem, em média.

Alteraremos nosso documento de Coding Standards para que se prefira sempre um dos métodos que levaram vantagem na comparação, economizando ainda mais tempo de processamento.

About Adriano Laranjeira

Software engineer & developer See more at http://about.me/arglbr
This entry was posted in Português and tagged , , , , . Bookmark the permalink.

1 Response to Benchmark de métodos de atribuição do PHP

  1. Pingback: Adriano Laranjeira » Blog Archive » Benchmarking of attribution methods of PHP

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s