かまてく ブログ

今日の努力は、明日の経験! - Kamakura Shinsho Engineer Blog

PHPでのメモリ管理(バージョンによるメモリ消費の違い)

少し気になったので、PHPでメモリがどのように消費されるかを調べてみようと思いました。 そこで、書いたテストコードがこれです。

memory_test.php

<?php
$before_memory = memory_get_usage();
$a = array();
$after_memory = memory_get_usage();
$used_memory = $after_memory-$before_memory;
echo "使用メモリ before[{$before_memory}] after[{$after_memory}]:after - before = {$used_memory}\n";

$before_memory = memory_get_usage();
for( $i = 0;$i < 100;$i++ ){
    $a[] = "";
}
$after_memory = memory_get_usage();
$used_memory = $after_memory-$before_memory;
echo "使用メモリ before[{$before_memory}] after[{$after_memory}]:after - before = {$used_memory}\n";

実行結果がこちら

$ php -v
PHP 5.3.29 (cli) (built: May 12 2015 22:42:19)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2014 Zend Technologies

$ php memory_test.php
使用メモリ before[626792] after[627256]:after - before = 464
使用メモリ before[627592] after[645496]:after - before = 17904
$ php -v
PHP 7.1.27 (cli) (built: Mar  8 2019 18:22:16) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.1.27, Copyright (c) 1999-2018, by Zend Technologies
    with Xdebug v2.5.5, Copyright (c) 2002-2017, by Derick Rethans

$ php memory_test.php
使用メモリ before[354456] after[354456]:after - before = 0
使用メモリ before[354488] after[362736]:after - before = 8248

php5.xとphp7.xでは、メモリ消費に大きな差があることがわかります。 php5.xでは配列を生成しただけで464バイトも消費されています。 (php7.xでは、0バイトなのでおそらくスタックに変数が作られているだけだと類推できます) 5.xと7.xでメモリ消費がおよそ2倍になっているので5.x系を利用している環境では注意したほうがいいですね。

鎌倉新書では正社員を積極採用しています!

(WEBデザイナー)デザインからコンセプト設計まで■賞与実績4ヶ月分■

仕事内容 【仕事内容】 ■ポータルサイト(お墓・葬儀・仏壇)のWebサイト構築のためのWebデザインの設計からコーディング業務まで担って頂きます。 特に事業側のコンセプトを理解しながら、LPやサイトのデザイン設計を提案できる方を求めています。 【提供できる価値・経験】 ■細かく数字を見て、サービスをグロースさせていく経験 1週間単位でスプリントを組んで、数多くの機能をリリースさせていく開発プロセスを導入しています。 数多くのトライ&エラーを行い、きっちり効果を分析していくことで、サービスを着実に成長させるプロセスが身につきます。 また、事業側のWebディレクターとも密にコミュニケーションを取りながら、事業会社ならではの一体感を持ったクリエイティブワークを実践しています。 ■今後大きく成長するマーケットにおけるサービス開発に携わることができる経験 世界一の高齢化社会である日本においてライフエンディング業界は大きなポテンシャルを持っています。 その業界に必要なサービスを提供することで、大きなユーザーの需要を満たすサービスを提供するやりがいと経験を得ることができます。 また、今の日本社会で必要とされているサービスを提供しているという社会貢献も大きなやりがいとして持つことができます。 【デザインの特徴】 ■企画構想段階から関わり、ユーザー視点に立ったUIの設計、ビジュアルデザイン ■色彩学、構成学、視覚生理学などの知識を生かしたデザイン ■プロジェクトの成功に貢献するデザイン(目的を本質的に達成するデザイン) ■問題点や課題、目的をしっかり理解し、解決するデザイン 応募資格 【必須(MUST)】 ■Webサービスのデザイン・コーディング経験 ■WebサービスやスマートフォンアプリのUI・情報設計の経験 ■Photoshop、Illustratorなどの画像処理ソフトを使用したビジュアルデザイン業務 【歓迎(WANT)】 ■情報の可視化 ■部分遷移、画面遷移を含むプロトタイプ構築経験 ■デザインコンセプトの言語化 ■ユーザー体験の設計業務 ■デザインのトーン&マナー設計 ■プロダクト改善経験 ▼求める人物像 ・自発的に施策を立案・実行できるマインドを持つ方 ・成長環境の中で自分を試してみたい方 ・数字の分析に強い方 ・コミュニケーション能力 ・課題発見力、解決力 続きを見る