ラベル 比較 の投稿を表示しています。 すべての投稿を表示
ラベル 比較 の投稿を表示しています。 すべての投稿を表示

2016年7月8日金曜日

[PHP]ノロノロ関数、array_pushは極力使うな・count()よりもisset()

今回はPHPのお話です。
PHPには「これでもか」と多くの配列関数があります。

その中でも大変遅い関数がありますので紹介しようと思います。

array_push()

コイツは遅い。ため息が出るほど遅いです。

そもそもarray_push()は、配列の最後に値を追加する関数です。

$hoge = array('ね', 'うし', 'とら');

array_push($hoge, 'う', 'たつ');
/*
[
    "ね",
    "うし",
    "とら",
    "う",
    "たつ"
]
*/
でもこうするくらいだったら、
$hoge[] = 'う';
$hoge[] = 'たつ';
こうしたほうが早いです。ネット情報によると、10倍近く速度が違うらしいです。
ここまで差が出ると、中では一体何をしてるんだと疑いたくなります(^_^;;)。買い物を頼んだら1週間かかって帰ってくるようなものです。
array_push()は追加後の要素数を返しますが、それならcount()を使って個別に調べたほうがいいと思います。

count()

count()は目立って遅い関数ではありません。しかし、使い方によっては速度面で損をしているかも。
count()は配列の要素数を返します。でも、場合によっては要素数を知らなくても済むことだってあるのです。
例えば、
//こうするくらいだったら、
if(count($hoge) === 0){
//こうしたほうが早い
if(isset($hoge[0])){

//また、こうするくらいだったら、
if(count($hoge) >= 6){
//この方が早い
if(isset($hoge[5]){
isset()は関数のような見た目をしていますが、実は違います。これ、if()while()と同じ、言語構造なのです。当然、呼び出しのオーバーヘッドがない分早いです。
ちなみに、empty()も言語構造です。

まとめ

他にもネット上にはいろいろな情報が転がってます。array_search()は遅い、型が事前にわかってるなら==より===のが速い、intval()strval()よりキャストした方がいい、など。

ただ、時と場合によりけりです。具体的な配列の要素数を知りたいなら上で紹介した方法よりもcount()の方がましでしょう。確かにPHPには遅い関数や構文が多いですが(そもそも言語自体遅い)、場面に応じて使い分けられるようにしましょう。

2015年9月27日日曜日

どのブログサービスを使うべきか

世の中には、多くのブログサービスがあります。

  • アメーバブログ(アメブロ)
  • Yahoo!ブログ
  • Blogger(このブログはBloggerです)
  • WordPress
  • 楽天ブログ
etc...

これだけあると、初心者はどうすればいいかわからなくなってしまいます。

そこで、それぞれの長所や短所をまとめました。


アメーバブログ


もっとも人気のあるといって過言でないブログサービスです。また、簡単な操作が可能です。
著名人など多くの人が利用しており、アメーバのアカウントを作ると勝手にブログは作成されます。
あいさつペタなどの特徴的な機能のほか、アカウントが非常に多いために友達もできると評判です。

しかし、カスタマイズ性に欠けるため、JavascriptやCSSなどをゴリゴリ書きたいエンジニアさんや、カスタマイズを楽しみたい方は避けるべきです。


Yahoo!ブログ


比較的簡単にブログが作れると評判です。
Yahoo!アカウントとの連携ができるからといった理由などで評判はいいようです。
しかし、コメント投稿の際の画像認証が不要などの理由から、ロボットによる迷惑コメントが相次いでいます。セキュリティ面からみると、避けるべきかもしれません。
カスタマイズも思うようにできないようです。


Blogger


今私が使用しているサービスです。
Googleと共通のアカウントで運営できるため、Google+やYoutubeなどとの連携は最高です。
テンプレートも数多く用意されているほか、大半のHTMLやCSS、デザインや画面右側のガジェット(PC版のみ)が編集できます。
ただHTMLの自動補正機能が上級者にとっては邪魔になることがあるので、JavascriptやCSSは極力外部ファイル化するのがポイントです。
比較的初心者から上級者までおすすめできる内容です。


WordPress


比較的上級者向けです。
何よりもカスタマイズ性はこの上なく最高です。
数多くのプラグインが使用できるほか、なにせ管理者自ら構築したサーバーですので正直、何かやろうと思ったらなんでもできます。
SSL暗号化、独自ドメインなどはもちろん、FTP転送や同じドメイン内にファイルが設置できるためにいろいろとできます。
既定で設定されているCSSなどを取り払うこともPHPの知識があれば可能です。つまり、なにもかも思い通りになります。
ただし、セキュリティや脆弱性、PHP、プラグイン、サーバーやインターネット、SEOに関する専門知識が必要になります。徹底的に上級者向けを追及したサービスといえます。


まとめ

結果としての管理人のおすすめです。
  • 初心者ならBlogger
  • 上級者ならWordPress

長い記事にお付き合いいただきありがとうございました。