カテゴリー別アーカイブ: PHP

PHPのループで [毎回if文判定 VS 毎回%(剰余)計算]

とある場面で、以下のような状況になりました。

先頭に戻る処理を「if文」or「剰余」で配列の参照ポインタを計算することになりましたと。

ここで、どっちが処理速い?
と思ったので試してみました。

初めに1つ: 1億個ほどのデータ量じゃないと速度を実感できなかったりします。

上記をtimeコマンドで実行
>time php test.php

何回か試しましたが、1億回の繰り返しでは約1.5秒の差がありました。
比較のが軽いということですかね。

ただ、ぶっちゃけそんなに大きな差がないので気にせず可読性を重視しよう。
これに尽きると思います。

ぱっと思いつきませんでしたが、なんか他にもいろいろ方法はありそうですね。

 

——————-
PHP 5.6
CentOS 6.8
——————-

PHPでビット演算

仕事である情報を32ビットのフラグで持つ事になったので、
もちろんビット演算子「&」とか使いました。
その時のPHPでの注意点というか、他の言語だとあんまり起こらない現象に出会った時の話。

DBから取得した値とチェック対象の変数などとINT型のつもりで比較したとき・・・

この処理でTRUEになりませんでした。
両辺が文字列になっていたのが原因でした。
公式マニュアルには「両辺が文字列の場合、文字のASCII 値を使用し、結果も文字列になる」とあります。

とりあえず、PHPでビット演算する場合はintval()とか使って意図した型に変換してからやりましょうって話。
フレームワークやらライブラリやらで意図しない型になる場合がありますので。

 

検証ページつhttp://www.lv210.com/test_tool/test_bit_operation.php