ホーム > タグ > PHP

PHP

【PHP】PHP 5.4がPHP 5.3より2倍速いという証明

Proof that PHP 5.4 is Twice as Fast as PHP 5.3の記事を翻訳しました。

誤訳がありましたら教えてもらえたら助かります。

【PHP5.4がPHP5.3より2倍速いという証明をします】
最近、異なったバージョンのPHPのベンチマークをいくつか取ってます。
なぜなら、PHP5.4は”速い”というのを聞いたし、私はデータギークだからどのくらい速いかを知りたいのです。
一般的にはPHP5.4は速いですが、特に最適化されたユースケースを用いない限り、PHP5.3の2倍も速くなることはないです。

2つのバージョンを比較した最初の試みは以下になります:


この結果には驚きました。PHP5.4は実際にそんなに速かったのでしょうか??

それがそうでもないのです。私のミスは一つのことを行うとても簡単なスクリプトを取ったことでした。- 実際にそれは2つのバージョン間で大幅に改善されたものでした!私は同じコードの部分を何回もいくつかの悪いタイミングで実行するコードを持っています。- これはの数値は相対比較としてのみ有用です; 私のノートPCでこれらを実行しています。

スクリプト:

$r = 10 * 1000 * 1000;
$start = microtime(true);
 
while($r-- > 0) {
    new StdClass();
}
 
$finish = microtime(true);
echo "time taken: " . ($finish - $start) . "\n";

それぞれのコードを5回実行して結果を平均しました(オリジナルデータ: gistにあります)。

この話のモラル:あなたが望んでいるものを統計的に証明できます!私はより実用的なベンチマークを求めて多種多様なスクリプトを集めていますが、それがどれくらい速くPHP5.4のオブジェクトをインスタンス化するかを見て下さい!PHPプロジェクトに関わっている全ての人に多くのありがとうをいいたいです。PHPは進化し続けるし、多くの改良を続けるでしょう。そのことに私は感謝しています!

※煽動的なブログタイトルに関して謝罪します。しかし、これらは私がこの結果を取った時には適切な言葉でした。


以上です。
つまりはベンチを取った機能(オブジェクトをインスタンス化するところ)が確かに2倍速くなってるますねってこと。限定的すぎるけど。。
訳し終わって「なんでこれを選んでしまったんや。。。」という感じでした。
次回からはきちんと内容を把握して訳したいと思います!

【PHP】ORMに関して

約8ヶ月ぶりに更新します。
といっても対した内容でもないです。

去年からORMに関してちょっとずつ調べていて、PHPで簡単なORMを作れないかなというのを考えています。
既存としてあるものはPDO(ORMと読んでよいのかわからないが…)、ADOdb、php-activerecord、Doctrine、Propelなどがあります。
php-activerecordはcodeigniterでDoctrineはSymfonyで利用されています。
自分としてはもっとライトにPDOをラップしたものを作りたいと思います。

というのもPerlのDBIをラップしたDBIxという名前空間がついたモジュールがライトなものからディープなものまで多数あり、これをPHPでも実現したかった為です。
いきなり大きなものは作れないので小さなことからコツコツやっていこうと思い作ることを決意しました。

名前空間はPDOxというものを使って作っていこうと思います。
と思って調べていたらmagicalhatさんPHP-PDOxSkinnyというのをgithubにあげていました…

似たような感じにはなるとおもますが、ちょっとずつやっていこうという決意のブログです。

【php】PDOのドキュメント

きちんと読んだ事が無かったのでこの機会に読みました。
PHPのマニュアルの中にあります。

PHP Data Objects

Doctrineの内部はPDOを使っているので読んでおいて損はないかと思います。
CakePHPでも使ってるのかな。(たぶん)

特に目新しいことはありませんが、ある事柄を拾得する際に一度はマニュアルを読むという習慣を
きちんとつけた方がよいですね。と最近は自分に言い聞かせています。

【PHP】Memcache

memcachedに関して見ました。

PHPにはmemcachedを扱う方法として2つのモジュールがある。
1つ目はMemcacheで2つ目はMemcached。

Memcacheはpear形式で、Memcachedはpecl形式でインストールするとのこと。
とりあえず今回はMemcacheの方をみました。

Memcache

Memcache – PHP Manual

例:
memcache1.php

<?php
$mem = new Memcache;
$mem->connect('localhost', 11211);
$mem->set('key1', 'value1');
$mem->set('key2', 'value2');

echo $mem->get('key1'), PHP_EOL;
echo $mem->get('key2'), PHP_EOL;

簡単には上記の様な感じで使用をして、他にもいくつかのメソッドがあるのでそれはマニュアルを参照する。

【PHP】例外について

例外についてずっと避けてきたんですが(理由はわからないけど、なんかとっつきにくいイメージがありました。。)、
さらりとマニュアルを読んでみました。

例外

Exception – PHP Manual

読んでみたらなんも難しい事はなくむしろありがたいかなと思えた今日この頃。
この記憶がいつまで続くかわかりませんが、大事にしたいと思います。

Home > Tags > PHP

Search
Feeds
Meta

Return to page top