このエントリは闇PHP Advent Calendar 2015の14日目です。 本稿では、PHP7のzend_string構造体導入によるメリットの話をします。 PHP5とPHP7の文字列型の扱い PHP5では、文字列型の変数は次のようにメモリに割り当てられます(横幅いっぱいが8バイト)。 文字列の本体以外はzval構造体で管理し、文字列の本体は別途メモリ確保するという形になっています。一方、PHP7では次のようになります。 1つの文字列変数が、zval構造体とzend_string構造体の組み合わせで実現されています。 これだけ見ると、PHP7では文字列長と参照カウンタrefconuntがzvalから追い出されてzend_stringに移動したくらいで、PHP5とPHP7のメモリ消費量に大きな違いは無いように思えるかもしれません(あるいはPHP7の方が不利に見えるかもしれません)。しか