関数仕様編 その6(参照について その3)

Human Resocia Co.,Ltd.

2015-08-26 09:00

ヒューマンリソシア株式会社はコラム「関数仕様編 その6(参照について その3)」を公開しました。
###

「参照ってなに?」の説明、参話目でございます。
さて…この参照ですが。C言語などの言語をやっていると割と「自然に」扱いたくなるものなのですが、
書きましたとおり「C言語におけるポインタ」と「PHPにおける参照」は、色々と「違う物」なので、
同じように扱うと痛い目にあいます。

基本的に。
C言語などで「ポインタで扱う」のはおおまか「メモリを省略したい」ってのが初手に来て、
あとはそれに伴って「(データをcopyする、ってのをしないから)速度が速くなる」というのが利点の主軸かと思います
(C言語、でポインタの、特に演算までを扱う理由は他に山盛りあるのですが、”C言語を書いている人が、
PHPにおいて参照を使おうと考える”理由、という観点で)。
PHPはその辺りが、仕組み的に「参照を使わなくても、元々内部で、参照に近い構造」を持っているので。
基本的には「リファレンス渡しをしてもしなくても概ね速度が変わらない」のは、
以下のコードで簡単に実験ができます。

function hoge($s) {
echo $s;
}
function hoge_r(&$s) {
echo $s;
}
//
function test($func) {
echo “test is {$func} \n”;
var_dump( memory_get_usage() );
ob_start();
$start = microtime(true);
for($i = 0; $i < 100000; $i ++) {
$p = ‘012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789’;
$func($p);
}
$end = microtime(true);
ob_end_clean();
var_dump( memory_get_usage() );
var_dump( $end – $start );
}
//
test(‘hoge’);
test(‘hoge_r’);

メモリの食い方含めて、ほとんど変わらないですね。厳密には、例えば筆者の環境だと

test is hoge
int(117616)
int(117992)
float(0.17729496955872)
test is hoge_r
int(117880)
int(117992)
float(0.18609499931335)

この続きは以下をご覧ください
(リンク »)
本プレスリリースは発表元企業よりご投稿いただいた情報を掲載しております。
お問い合わせにつきましては発表元企業までお願いいたします。

【企業の皆様へ】企業情報を掲載・登録するには?

御社の企業情報・プレスリリース・イベント情報・製品情報などを登録するには、企業情報センターサービスへのお申し込みをいただく必要がございます。詳しくは以下のページをご覧ください。

ホワイトペーパー

新着

ランキング

  1. セキュリティ

    「デジタル・フォレンジック」から始まるセキュリティ災禍論--活用したいIT業界の防災マニュアル

  2. 運用管理

    「無線LANがつながらない」という問い合わせにAIで対応、トラブル解決の切り札とは

  3. 運用管理

    Oracle DatabaseのAzure移行時におけるポイント、移行前に確認しておきたい障害対策

  4. 運用管理

    Google Chrome ブラウザ がセキュリティを強化、ゼロトラスト移行で高まるブラウザの重要性

  5. ビジネスアプリケーション

    技術進化でさらに発展するデータサイエンス/アナリティクス、最新の6大トレンドを解説

ZDNET Japan クイックポール

自社にとって最大のセキュリティ脅威は何ですか

NEWSLETTERS

エンタープライズ・コンピューティングの最前線を配信

ZDNET Japanは、CIOとITマネージャーを対象に、ビジネス課題の解決とITを活用した新たな価値創造を支援します。
ITビジネス全般については、CNET Japanをご覧ください。

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]