hnwの日記

2015-12-01から1ヶ月間の記事一覧

2015年をふりかえる

年末なので今年のふりかえりを書きます。基本的には自分用エントリなんですが、何かの参考になれば。 書いた 2015年ははてなダイアリーに本記事を含め31本の記事を書きました。人気があったのは下記の記事です。 Javaで書かれたPHP処理系のJPHPが高速だった …

PHP7からstrlen関数に特化した高速化が採用された

PHP

(2016/01/01 02:20追記)mbstring.func_overloadの章を盛大に書き換えました。なぜか廃止されたと思い込んでたんですが、特に廃止もされてなくて、PHP 7でも動くことは動きます。ただ、仕組み上strlenだけ言うことを聞かなくなっていますので、使い道として…

PHP起動時からインターン化されている文字列がどれくらいあるのか

PHP

このエントリは闇PHP Advent Calendar 2015の23日目です。 先日の記事「PHPのインターン化文字列とは何か」でインターン化文字列について紹介しましたが、記事だけでは実際にどう使われているかピンと来なかった方も多かったかもしれません。今回、PHP 7.0.1…

PHP7から文字列の無駄なコピーが減った話

PHP

このエントリは闇PHP Advent Calendar 2015の14日目です。 本稿では、PHP7のzend_string構造体導入によるメリットの話をします。 PHP5とPHP7の文字列型の扱い PHP5では、文字列型の変数は次のようにメモリに割り当てられます(横幅いっぱいが8バイト)。 文…

PHPの文字列まわりを調べるための拡張モジュールを作ってみた

PHP

このエントリは闇PHP Advent Calendar 2015の11日目です。 strdumperというPHP拡張モジュールを作りました。 現時点では、この拡張モジュールは下記の3つの関数を実装しています。 str_dump void str_dump(mixed $var) $varが文字列型だった場合に、詳細の情…

GoでPHP拡張モジュールを書いた話

PHP

12/6のGo Conference 2015 WinterでGoでPHP拡張モジュールを書いたよ、という内容のLTをしてきました。 ざっくり言うと、Goって言ってもCのレベルに落ちてくれば連携なんて簡単でしょって思ってたけど、GoもPHP拡張もビルドプロセスが隠蔽されてるので、落と…

PHPのインターン化文字列とは何か

PHP

このエントリは闇PHP Advent Calendar 2015の3日目です。なぜか@do_akiさんによる4日目の記事「ZEND_TICKS と tick 関数」を読んだ後で書いています。 本稿では、あまり日本語での説明を見たことがないPHPのインターン化文字列(interned strings)について紹…

+演算子の挙動がJavaScriptっぽくなるPHP拡張モジュールを書いてみた

PHP

このエントリは闇PHP Advent Calendar 2015の2日目です。3日目までは僕が書く予定ですが、4日目以降の援軍を絶賛募集中です。 PHPの+演算子で文字列連結できないか? PHPの+演算子は算術加算の演算子です。つまり、オペランドを整数または浮動小数点数として…

拡張モジュール作者だけが知っているPHPのconfigureオプション

PHP

このエントリは闇PHP Advent Calendar 2015の1日目です。ここでの「闇PHP」はPHPのC言語レイヤの話題という意味で使っています。 そもそも、このAdvent Calendarは第六回闇PHP勉強会を開催する直前の変なテンションで作られたものです。25枠全部が埋まるとは…