杉田ともゆきの「きぎょうにっき」

(2008/06/27 Fri)

PHP関数【実行速度決定戦】

PHPプログラマの皆さんこんにちは。
今年の3月からPHPのプログラミングを始めた僕ですが、いまだにPHP関数リファレンス片手に頑張ってます。
いろんなサンプルプログラムを読んでいると、同じ処理をするのに、作者によって使っている関数が結構違う。
んじゃ、どっちがいいのってことで、実行速度の速さで調べてみることにしました。

例えば、文字列を分割するとき。
$str = "this,blog,is,written,in,japanese";
カンマで分割するならsplitとexplodeどっち?
[コード]
$array1 = explode(",",$str);
$array2 = split(",",$str);

ついでにpreg_splitも
$array3 = preg_split("[,]",$str);
[結果]
Array ( [0] => this [1] => blog [2] => is [3] => written [4] => in [5] => japanese )
[速度]
それぞれ10万回ずつ繰り返した結果、処理にかかった時間は
explode: 0.187秒
split: 0.556秒
preg_split: 0.354秒
区切り文字が1種類の場合はexplodeが圧倒的に有利ですね。
explodeは単純に指定した文字で区切るのに対して、split,preg_splitは正規表現を使うので実行速度が遅くなるようです。
しかし、splitで分割する例をたくさん見受けるのは何故なんでしょうか。

MT312.comさんの処理速度最適化法
http://www.mt312.com/php/41/
を読むと、正規表現を使う場合は速度が落ちるようです。
正規表現を使わずに処理できる場合はなるべく、使わない関数を利用しましょう。
文字列置き換えもpreg_replaceを使う前にstr_replaceが使えないか確認しましょう。

決定戦と言いつつ、今回はここまで。
気が向いた時に続きを書こうと思います(投げた!


この記事へのトラックバックURL

http://www.fruitblog.net/vshare/tb/?4864b176398c2

この記事へのトラックバック一覧


この記事へのコメント一覧

こまっち at 2008/06/27 23:21
まるで大学の研究のようなことを・・・笑 [削除]
コメントを削除するには、削除パスワードを入力してください :  [x]

at 2008/07/04 22:29
[AAd}XtI
KbNKN
UCR V(* PP)

[削除]
コメントを削除するには、削除パスワードを入力してください :  [x]

名前:
パスワード:
URL:
コメント:
  このコメントを非公開にする
(2008/06/21 Sat)

CSVデータの読み取り

仕事でEXCELデータをデータベースにインポートする必要があったので覚書。
といってもCSVをEXCELで作成したものですが。

PHP ver.
5
使った関数
fgetcsv
mb_convert_variables


$row = 1;
$handle = fopen("test.csv", "r");
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
mb_convert_variables("UTF-8", "SJIS", $data);
$num = count($data);
echo "

$num fields in line $row:

\n";
$row++;
for ($c=0; $c < $num; $c++) {
echo $data[$c] . "
\n";
}
}
fclose($handle);

元となったコードhttp://phpspot.net/php/man/php/function.fgetcsv.html

環境がUTF-8だったので、4行目で配列の文字コードをSJISからUTF-8に変換しています。


この記事へのトラックバックURL

http://www.fruitblog.net/vshare/tb/?485c5e8cf24ab

この記事へのトラックバック一覧


名前:
パスワード:
URL:
コメント:
  このコメントを非公開にする
(2008/05/01 Thu)

24歳になりました

昨日30日に24歳になりました^^
友達に誕生日タコパに呼んでもらいました。
ありがとう!!
よく27,28歳くらいに間違われますが、まだ24歳の若造です。

今年は24歳らしいフレッシュさと落ち着きを併せ持つ大人になりたいです。
そのために、もう少しだけ外見に気をつけようかな。


この記事へのトラックバックURL

http://www.fruitblog.net/vshare/tb/?4818f4fd65a55

この記事へのトラックバック一覧


名前:
パスワード:
URL:
コメント:
  このコメントを非公開にする
(2008/04/19 Sat)

R25くんレベルアップ!

チャチャチャチャーチャーチャッチャチャー♪

今、東京をはじめ全国で大人気の(?)フリーペーパーR25のウェブサイトがリニューアルされてから半年くらいたったのでしょうか。
リニューアル後のマスコットキャラクターR25くんがレベル2になりました。

と、その前にR25くんとは?
--(引用)--
いきなりMYって言われても、誰の?って感じかもしれませんが、このR25のメインキャラクター「R25くん」は、本当に読者の皆さんおひとりおひとりのものだったりします。皆さんがR25.jpにどのくらい訪れてくれたか、どんなページを読んでくれたかをちゃんと記憶していて、それによって彼は成長(変身?退化?)していくのです。おせっかいかも・・・とは思いつつ、陰ながら、皆さんのインターネットライフを応援しています。MY R25くんの存在が、R25.jpの魅力のひとつとして受けいれてもらえたら嬉しいなぁ。
(中略)
R25くんは皆さんが見たページの内容によって変化します。キャラのバリエーションはなんと全60種!R25.jpの記事のジャンルも多種多様!どんなふうに成長するかはあなた次第です。もしかしたら、とんでもないことになるかも、しれません・・・。ちなみに、レアキャラとしてクリックに反応して動くスペシャルR25くんもご用意。ある特定のジャンルのページを何ページも見続けると、出現します。時間があったら、探してみてください。
--(http://r25.jp/utility/about_r25jp/about_r25kun.html)--

そんなわけで9回訪問した結果、僕のR25くんは「たいあたリーマン」にレベルアップしました。
おそらく、カウントはCookieのみで行っており、ログインの必要がないので誰でも気軽に楽しむことができます。
仕組みはさておき、なんだか嬉しいですね。

ちなみに僕の読んだ記事(ステータス?)は以下の通り〜
政治:3
社会:3
経済:3
スポーツ:2
雑学:3
連載:1
モテ:2
スペシャル:3


この記事へのトラックバックURL

http://www.fruitblog.net/vshare/tb/?48091ac719f02

この記事へのトラックバック一覧


名前:
パスワード:
URL:
コメント:
  このコメントを非公開にする
(2008/04/14 Mon)

CSSメモ

【リストスタイルの統一】
IEとFirefoxではリストのマージン、パディングの定義方法が異なる。
以下のCSSで統一。
ul,ol {
padding-left: 14px;
}
ul li,
ol li {
margin-left: 1em;
padding-left: 1em;
}

ul,olのpadding-leftはul,olに背景やボーダーを設定するためのもの。

【Firefoxでtext-align:-9999pxとしたときの枠線対策】

http://kikky.net/pc/firefox_9999.html


【option要素のスタイル統一】
option要素に幅を与えた場合(与えなくても)Firefoxでは幅が狭くなる。
option {
padding-right: 8px;
}

これで統一。
IE、Safariでは右パディングは増加しない。

この記事へのトラックバックURL

http://www.fruitblog.net/vshare/tb/?47d4466a6f9cf

この記事へのトラックバック一覧


名前:
パスワード:
URL:
コメント:
  このコメントを非公開にする
Copyright© 2006 iBRIDGE Corporation All Rights Reserved.
【アイブリッジ関連サイト】 懸賞・ポイント | 懸賞 | グルメ取り寄せ | ブログ | 名産品 | ショッピング | 特産品 | グルメ | ペット | 釣り | 取り寄せ
| クレジットカード比較 | ETC-カード比較 | 海外旅行-カード比較 | ショッピング-カード比較 | 年会費無料-カード比較