Submit Search
Upload
PHP7の内部実装から学ぶ性能改善テクニック
•
24 likes
•
17,662 views
Yoshio Hanawa
Follow
Developers Summit 2015 KANSAI (2015/9/4) 発表資料
Read less
Read more
Engineering
Report
Share
Report
Share
1 of 64
Download now
Download to read offline
Recommended
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
shinjiigarashi
2021/12/21 PHPerKaigi petit - PHP8.1リリース祝賀会 でのトーク「モダンPHPテクニック 12選 ―PsalmとPHP 8.1で今はこんなこともできる!―」のスライドです。発表時点からごくわずかに加筆修正した部分があります。 https://phperkaigi.connpass.com/event/233022/
PHP の GC の話
PHP の GC の話
y-uti
第 87 回 PHP 勉強会での発表資料です。PHP の処理系に採用されている参照カウント方式の GC と循環参照を回収するアルゴリズムについて簡単に説明します。また、特定の限られた状況で循環参照の回収が処理速度に悪影響を与えることを、簡単なサンプルプログラムを用いて示します。
こわくない Git
こわくない Git
Kota Saito
「マージがなんとなく怖い」「リベースするなって怒られて怖い」「エラーが出て怖い」 Git 入門者にありがちな「Git 怖い」を解消するため、Git のお仕事(コミット、ブランチ、マージ、リベース)について解説します。
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
こちらのスライドは以下のサイトにて閲覧いただけます。 https://www.docswell.com/s/ockeghem/ZM6VNK-phpconf2021-spa-security シングルページアプリケーション(SPA)において、セッションIDやトークンの格納場所はCookieあるいはlocalStorageのいずれが良いのかなど、セキュリティ上の課題がネット上で議論されていますが、残念ながら間違った前提に基づくものが多いようです。このトークでは、SPAのセキュリティを構成する基礎技術を説明した後、著名なフレームワークな状況とエンジニアの技術理解の現状を踏まえ、SPAセキュリティの現実的な方法について説明します。 動画はこちら https://www.youtube.com/watch?v=pc57hw6haXk
AWS CDKに魅入られた PHPer がオススメする
AWS CDKに魅入られた PHPer がオススメする
Taichi Inaba
PHPカンファレンス2022登壇資料
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
Jun-ichi Sakamoto
May 29~30, 2019 に開催された "de:code 2019" の Day1 EXPOシアターセッションで、Blazor について発表した際のスライド資料です。CC BY License、又は The Unlicense のデュアルライセンスで再利用可能です。 アニメーション付 PowerPoint 原ファイルは以下の URL から入手可能です。 https://1drv.ms/p/s!Ahj5X4eD4NFdgvpnYa4h1jR5JnFlmg
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
モノビット エンジン
2017年10月27日、モノビットエンジン勉強会inサイバーコネクトツーにて、中嶋謙互が講演しました「ネットワークゲームにおける TCPとUDPの使い分け」のスライドになります。ネットワークゲームを製作する際にご参考頂けますと幸いです。 登壇者: 株式会社モノビット 取締役 CTO 中嶋謙互
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
Visual Studio Users Community Japan #1 で発表した資料になります。 https://vsuc.connpass.com/event/143114/
Recommended
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
shinjiigarashi
2021/12/21 PHPerKaigi petit - PHP8.1リリース祝賀会 でのトーク「モダンPHPテクニック 12選 ―PsalmとPHP 8.1で今はこんなこともできる!―」のスライドです。発表時点からごくわずかに加筆修正した部分があります。 https://phperkaigi.connpass.com/event/233022/
PHP の GC の話
PHP の GC の話
y-uti
第 87 回 PHP 勉強会での発表資料です。PHP の処理系に採用されている参照カウント方式の GC と循環参照を回収するアルゴリズムについて簡単に説明します。また、特定の限られた状況で循環参照の回収が処理速度に悪影響を与えることを、簡単なサンプルプログラムを用いて示します。
こわくない Git
こわくない Git
Kota Saito
「マージがなんとなく怖い」「リベースするなって怒られて怖い」「エラーが出て怖い」 Git 入門者にありがちな「Git 怖い」を解消するため、Git のお仕事(コミット、ブランチ、マージ、リベース)について解説します。
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
こちらのスライドは以下のサイトにて閲覧いただけます。 https://www.docswell.com/s/ockeghem/ZM6VNK-phpconf2021-spa-security シングルページアプリケーション(SPA)において、セッションIDやトークンの格納場所はCookieあるいはlocalStorageのいずれが良いのかなど、セキュリティ上の課題がネット上で議論されていますが、残念ながら間違った前提に基づくものが多いようです。このトークでは、SPAのセキュリティを構成する基礎技術を説明した後、著名なフレームワークな状況とエンジニアの技術理解の現状を踏まえ、SPAセキュリティの現実的な方法について説明します。 動画はこちら https://www.youtube.com/watch?v=pc57hw6haXk
AWS CDKに魅入られた PHPer がオススメする
AWS CDKに魅入られた PHPer がオススメする
Taichi Inaba
PHPカンファレンス2022登壇資料
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
Jun-ichi Sakamoto
May 29~30, 2019 に開催された "de:code 2019" の Day1 EXPOシアターセッションで、Blazor について発表した際のスライド資料です。CC BY License、又は The Unlicense のデュアルライセンスで再利用可能です。 アニメーション付 PowerPoint 原ファイルは以下の URL から入手可能です。 https://1drv.ms/p/s!Ahj5X4eD4NFdgvpnYa4h1jR5JnFlmg
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
モノビット エンジン
2017年10月27日、モノビットエンジン勉強会inサイバーコネクトツーにて、中嶋謙互が講演しました「ネットワークゲームにおける TCPとUDPの使い分け」のスライドになります。ネットワークゲームを製作する際にご参考頂けますと幸いです。 登壇者: 株式会社モノビット 取締役 CTO 中嶋謙互
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
Visual Studio Users Community Japan #1 で発表した資料になります。 https://vsuc.connpass.com/event/143114/
C#とILとネイティブと
C#とILとネイティブと
信之 岩永
2013/12/21 プログラミング生放送勉強会 第27回@品川 にて発表。
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
Yugo Shimizu
第5回 ゲームサーバ勉強会 で発表した リアルタイムサーバー〜Erlang/OTPで作るPubSubサーバー〜 の資料です。 ArkPS Server としてオープンソース化予定。
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
shinjiigarashi
- phpcon2022 の発表 - https://fortee.jp/phpcon-2022/proposal/b85ca73f-6383-4485-b2ae-4ec3e0913e72
.NET 7期待の新機能
.NET 7期待の新機能
TomomitsuKusaba
.NETラボ勉強会2022年8月 .NET 7期待の新機能
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
Yahoo!デベロッパーネットワーク
JJUG ナイトセミナー 「メッセージングミドルウェア特集」のRabbitMQの発表資料です。 https://jjug.doorkeeper.jp/events/65028
クラウド環境下におけるAPIリトライ設計
クラウド環境下におけるAPIリトライ設計
Kouji YAMADA
PHPカンファレンス福岡2019での発表資料です
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
2021年にインフィニットループ社内の新卒向け研修で使われた資料です。
PHP AST 徹底解説
PHP AST 徹底解説
do_aki
phpカンファレンス2016
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
2022-03-05 YAPC::Japan::Online 2022
async/await のしくみ
async/await のしくみ
信之 岩永
https://connpass.com/event/95696/ 2018/9/15 「Unity 非同期完全に理解した勉強会」にて登壇
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化
Gosuke Miyashita
2年ぐらい前の社内勉強会で使った資料。
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
Masahito Zembutsu
Dockerやコンテナについての理解を目指す入門テキストです。 CloudNative Days Kansai 2019 - #CNDK2019 における発表資料です。 https://cloudnativedays.jp/cndk2019/
オブジェクト指向できていますか?
オブジェクト指向できていますか?
Moriharu Ohzu
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
https://build.connpass.com/event/98947/
できる!並列・並行プログラミング
できる!並列・並行プログラミング
Preferred Networks
現在のマルチスレッドプログラミングの抱える問題点と、代替案をわかりやすく解説いたします。最近登場したConcurrent Revisionsも解説します。
Kotlinアンチパターン
Kotlinアンチパターン
Recruit Lifestyle Co., Ltd.
DroidKaigi2018の発表資料です。 https://droidkaigi.jp/2018/
40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること
onozaty
40歳過ぎてもエンジニアでいるためにやっていること
DockerとPodmanの比較
DockerとPodmanの比較
Akihiro Suda
Container Runtime Meetup #3 発表資料 (2021/1/28) https://runtime.connpass.com/event/198071/
Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造
Etsuji Nakai
ver1.0 公開 ver1.1 ディスクイメージを直接操作する方法を追加 (2015/02/20)
オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選
Takuya Ueda
Go言語LT大会で発表した資料です。 https://go-beginners.connpass.com/event/55768/
PHP7で変わること ——言語仕様とエンジンの改善ポイント
PHP7で変わること ——言語仕様とエンジンの改善ポイント
Yoshio Hanawa
PHPカンファレンス関西2015にて発表
PHP7の拡張モジュール事情
PHP7の拡張モジュール事情
Yoshio Hanawa
第94回PHP勉強会(2015/10/1) 発表資料
More Related Content
What's hot
C#とILとネイティブと
C#とILとネイティブと
信之 岩永
2013/12/21 プログラミング生放送勉強会 第27回@品川 にて発表。
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
Yugo Shimizu
第5回 ゲームサーバ勉強会 で発表した リアルタイムサーバー〜Erlang/OTPで作るPubSubサーバー〜 の資料です。 ArkPS Server としてオープンソース化予定。
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
shinjiigarashi
- phpcon2022 の発表 - https://fortee.jp/phpcon-2022/proposal/b85ca73f-6383-4485-b2ae-4ec3e0913e72
.NET 7期待の新機能
.NET 7期待の新機能
TomomitsuKusaba
.NETラボ勉強会2022年8月 .NET 7期待の新機能
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
Yahoo!デベロッパーネットワーク
JJUG ナイトセミナー 「メッセージングミドルウェア特集」のRabbitMQの発表資料です。 https://jjug.doorkeeper.jp/events/65028
クラウド環境下におけるAPIリトライ設計
クラウド環境下におけるAPIリトライ設計
Kouji YAMADA
PHPカンファレンス福岡2019での発表資料です
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
2021年にインフィニットループ社内の新卒向け研修で使われた資料です。
PHP AST 徹底解説
PHP AST 徹底解説
do_aki
phpカンファレンス2016
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
2022-03-05 YAPC::Japan::Online 2022
async/await のしくみ
async/await のしくみ
信之 岩永
https://connpass.com/event/95696/ 2018/9/15 「Unity 非同期完全に理解した勉強会」にて登壇
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化
Gosuke Miyashita
2年ぐらい前の社内勉強会で使った資料。
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
Masahito Zembutsu
Dockerやコンテナについての理解を目指す入門テキストです。 CloudNative Days Kansai 2019 - #CNDK2019 における発表資料です。 https://cloudnativedays.jp/cndk2019/
オブジェクト指向できていますか?
オブジェクト指向できていますか?
Moriharu Ohzu
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
https://build.connpass.com/event/98947/
できる!並列・並行プログラミング
できる!並列・並行プログラミング
Preferred Networks
現在のマルチスレッドプログラミングの抱える問題点と、代替案をわかりやすく解説いたします。最近登場したConcurrent Revisionsも解説します。
Kotlinアンチパターン
Kotlinアンチパターン
Recruit Lifestyle Co., Ltd.
DroidKaigi2018の発表資料です。 https://droidkaigi.jp/2018/
40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること
onozaty
40歳過ぎてもエンジニアでいるためにやっていること
DockerとPodmanの比較
DockerとPodmanの比較
Akihiro Suda
Container Runtime Meetup #3 発表資料 (2021/1/28) https://runtime.connpass.com/event/198071/
Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造
Etsuji Nakai
ver1.0 公開 ver1.1 ディスクイメージを直接操作する方法を追加 (2015/02/20)
オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選
Takuya Ueda
Go言語LT大会で発表した資料です。 https://go-beginners.connpass.com/event/55768/
What's hot
(20)
C#とILとネイティブと
C#とILとネイティブと
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
.NET 7期待の新機能
.NET 7期待の新機能
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
クラウド環境下におけるAPIリトライ設計
クラウド環境下におけるAPIリトライ設計
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
PHP AST 徹底解説
PHP AST 徹底解説
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
async/await のしくみ
async/await のしくみ
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
オブジェクト指向できていますか?
オブジェクト指向できていますか?
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
できる!並列・並行プログラミング
できる!並列・並行プログラミング
Kotlinアンチパターン
Kotlinアンチパターン
40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること
DockerとPodmanの比較
DockerとPodmanの比較
Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造
オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選
Similar to PHP7の内部実装から学ぶ性能改善テクニック
PHP7で変わること ——言語仕様とエンジンの改善ポイント
PHP7で変わること ——言語仕様とエンジンの改善ポイント
Yoshio Hanawa
PHPカンファレンス関西2015にて発表
PHP7の拡張モジュール事情
PHP7の拡張モジュール事情
Yoshio Hanawa
第94回PHP勉強会(2015/10/1) 発表資料
php-buildがいかに便利かを力説する
php-buildがいかに便利かを力説する
Yoshio Hanawa
PHP BLT #1 発表資料
本番環境で使いたいPHP
本番環境で使いたいPHP
Takuya Sato
PHP7はなぜ速いのか
PHP7はなぜ速いのか
Yoshio Hanawa
第85回PHP勉強会資料
PHPの今とこれから2022
PHPの今とこれから2022
Rui Hirokawa
11月リリース予定のPHP 8.2の話題を中心に,PHPの今とこれからについて説明します.
RFC: "var" Deprecation
RFC: "var" Deprecation
y-uti
第 102 回 PHP 勉強会での発表資料です。 前半では、PHP 7.1 での導入が決まっている新機能のいくつかを簡単に紹介します。後半では、賛否が分かれた RFC の例として "var" Deprecation を取り上げ、この RFC に対する議論を紹介します。
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
Katsuhiro Miura
PHPカンファレンス2017の登壇資料です
PHPでセキュリティを真面目に考える
PHPでセキュリティを真面目に考える
Takuya Sato
オープンソースカンファレンス2011 Hokkaido #osc11do 「PHPでセキュリティを真面目に考える」 LOCAL PHP部 佐藤琢哉(@nazo) http://labs.nazone.info/
【Hpcstudy】みんな、ベンチマークどうやってるの?
【Hpcstudy】みんな、ベンチマークどうやってるの?
Seiichiro Ishida
#hpcstudy のLT資料です。
あるあるLT〜サーバーサイドエンジニア〜 Vol.3
あるあるLT〜サーバーサイドエンジニア〜 Vol.3
Keiichi Hagiwara
2019/06/18 あるあるLT〜サーバーサイドエンジニア〜 Vol.3 @and factory
密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境
Fumihito Yokoyama
CLR/H Sapporo.cpp合同勉強会時に話したスライドです。
PHP 8 と V8 (JavaScript) で速さを見比べてみよう!
PHP 8 と V8 (JavaScript) で速さを見比べてみよう!
shinjiigarashi
PHP カンファレンス 2021 で利用したスライド 発表時点から若干の加筆修正あり
PHPNGの動向
PHPNGの動向
Yoshio Hanawa
次世代言語 Python による PyPy を使った次世代の処理系開発
次世代言語 Python による PyPy を使った次世代の処理系開発
shoma h
PyPy の紹介
phpstudy_php_to_node
phpstudy_php_to_node
Suguru Shirai
「PHPエンジニアがNodeエンジニアになったときの7つの効能」 2014/6/23 PHP勉強会 LT発表
PHPカンファレンス2014の懇親会飛び込みLT資料
PHPカンファレンス2014の懇親会飛び込みLT資料
Junichi Ishida
PHPカンファレンス2014の懇親会飛び込みLTの時に慌ててつくった資料です。
PHPカンファレンス2013 今ドキのPHPの書き方 ~PHP逆引きレシピ改訂版~
PHPカンファレンス2013 今ドキのPHPの書き方 ~PHP逆引きレシピ改訂版~
Yuta Sakurai
PHPカンファレンス2013で発表したスライドです。 PHP逆引きレシピ改訂版の改訂ポイントなどを紹介しています。
PHPとJavaScriptの噺
PHPとJavaScriptの噺
Shogo Kawahara
LT: 今日帰ってすぐに始められるPython #nds45
LT: 今日帰ってすぐに始められるPython #nds45
civic Sasaki
Pythonの紹介
Similar to PHP7の内部実装から学ぶ性能改善テクニック
(20)
PHP7で変わること ——言語仕様とエンジンの改善ポイント
PHP7で変わること ——言語仕様とエンジンの改善ポイント
PHP7の拡張モジュール事情
PHP7の拡張モジュール事情
php-buildがいかに便利かを力説する
php-buildがいかに便利かを力説する
本番環境で使いたいPHP
本番環境で使いたいPHP
PHP7はなぜ速いのか
PHP7はなぜ速いのか
PHPの今とこれから2022
PHPの今とこれから2022
RFC: "var" Deprecation
RFC: "var" Deprecation
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
PHPでセキュリティを真面目に考える
PHPでセキュリティを真面目に考える
【Hpcstudy】みんな、ベンチマークどうやってるの?
【Hpcstudy】みんな、ベンチマークどうやってるの?
あるあるLT〜サーバーサイドエンジニア〜 Vol.3
あるあるLT〜サーバーサイドエンジニア〜 Vol.3
密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境
PHP 8 と V8 (JavaScript) で速さを見比べてみよう!
PHP 8 と V8 (JavaScript) で速さを見比べてみよう!
PHPNGの動向
PHPNGの動向
次世代言語 Python による PyPy を使った次世代の処理系開発
次世代言語 Python による PyPy を使った次世代の処理系開発
phpstudy_php_to_node
phpstudy_php_to_node
PHPカンファレンス2014の懇親会飛び込みLT資料
PHPカンファレンス2014の懇親会飛び込みLT資料
PHPカンファレンス2013 今ドキのPHPの書き方 ~PHP逆引きレシピ改訂版~
PHPカンファレンス2013 今ドキのPHPの書き方 ~PHP逆引きレシピ改訂版~
PHPとJavaScriptの噺
PHPとJavaScriptの噺
LT: 今日帰ってすぐに始められるPython #nds45
LT: 今日帰ってすぐに始められるPython #nds45
More from Yoshio Hanawa
自宅の消費電力をリアルタイムに グラフ化してみた
自宅の消費電力をリアルタイムに グラフ化してみた
Yoshio Hanawa
PHPerKaigi Online #1 発表資料
Zend VMにおける例外の実装
Zend VMにおける例外の実装
Yoshio Hanawa
PHPerKaigi 2020 (2020/2/11) 発表資料。PHPカンファレンス 2019発表の再演です。
Zend VMにおける例外の実装
Zend VMにおける例外の実装
Yoshio Hanawa
PHPカンファレンス 2019 (2019/12/01) 発表資料
ぼくのかんがえる さいきょうの銀行振込
ぼくのかんがえる さいきょうの銀行振込
Yoshio Hanawa
秋の大LT会 2019 in Aizu #4 (2019/11/02) 発表資料
「OKグーグル! 銀行振込1000円」
「OKグーグル! 銀行振込1000円」
Yoshio Hanawa
RCC夏期成果物発表会にお邪魔したときのLT発表資料です。
浮動小数点数とOSSのバグの話
浮動小数点数とOSSのバグの話
Yoshio Hanawa
manifes2018 発表資料
PHP拡張をPECLに登録してわかったこと
PHP拡張をPECLに登録してわかったこと
Yoshio Hanawa
PHPカンファレンス2017 発表資料
GitHubからお金をもらった話
GitHubからお金をもらった話
Yoshio Hanawa
manifes2017発表資料
iOS/macOSとAndroid/Linuxのサンドボックス機構について調べた
iOS/macOSとAndroid/Linuxのサンドボックス機構について調べた
Yoshio Hanawa
社内ミーティング用の資料です。
realpathキャッシュと OPcacheの面倒すぎる関係
realpathキャッシュと OPcacheの面倒すぎる関係
Yoshio Hanawa
第七回闇PHP勉強会 (2016/12/11) 発表資料
家庭用ブロードバンドルータ上でWordPressを動かそう
家庭用ブロードバンドルータ上でWordPressを動かそう
Yoshio Hanawa
PHPカンファレンス2016発表資料
Laungage Update PHP編
Laungage Update PHP編
Yoshio Hanawa
LLoT(2016/8/27)発表資料
PHPの拡張モジュールをGoで作る
PHPの拡張モジュールをGoで作る
Yoshio Hanawa
Go Conference 2015 Winter 発表資料
GitHubにバグ報告して賞金$500を頂いた話
GitHubにバグ報告して賞金$500を頂いた話
Yoshio Hanawa
KLab社内勉強会ALM 発表資料
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
Yoshio Hanawa
第六回闇PHP勉強会発表資料
PHPの正規表現と最長一致
PHPの正規表現と最長一致
Yoshio Hanawa
第29回PHP勉強会発表資料です
偶然にも500万個のSSH公開鍵を手に入れた俺たちは
偶然にも500万個のSSH公開鍵を手に入れた俺たちは
Yoshio Hanawa
2015/1/24 江戸前セキュリティ勉強会のLT発表資料です
zval をダイエットしてみた
zval をダイエットしてみた
Yoshio Hanawa
Zend OPcacheの速さの秘密を探る
Zend OPcacheの速さの秘密を探る
Yoshio Hanawa
浮動小数点数の話 2013年度版
浮動小数点数の話 2013年度版
Yoshio Hanawa
第70回PHP勉強会の発表資料です。
More from Yoshio Hanawa
(20)
自宅の消費電力をリアルタイムに グラフ化してみた
自宅の消費電力をリアルタイムに グラフ化してみた
Zend VMにおける例外の実装
Zend VMにおける例外の実装
Zend VMにおける例外の実装
Zend VMにおける例外の実装
ぼくのかんがえる さいきょうの銀行振込
ぼくのかんがえる さいきょうの銀行振込
「OKグーグル! 銀行振込1000円」
「OKグーグル! 銀行振込1000円」
浮動小数点数とOSSのバグの話
浮動小数点数とOSSのバグの話
PHP拡張をPECLに登録してわかったこと
PHP拡張をPECLに登録してわかったこと
GitHubからお金をもらった話
GitHubからお金をもらった話
iOS/macOSとAndroid/Linuxのサンドボックス機構について調べた
iOS/macOSとAndroid/Linuxのサンドボックス機構について調べた
realpathキャッシュと OPcacheの面倒すぎる関係
realpathキャッシュと OPcacheの面倒すぎる関係
家庭用ブロードバンドルータ上でWordPressを動かそう
家庭用ブロードバンドルータ上でWordPressを動かそう
Laungage Update PHP編
Laungage Update PHP編
PHPの拡張モジュールをGoで作る
PHPの拡張モジュールをGoで作る
GitHubにバグ報告して賞金$500を頂いた話
GitHubにバグ報告して賞金$500を頂いた話
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
PHPの正規表現と最長一致
PHPの正規表現と最長一致
偶然にも500万個のSSH公開鍵を手に入れた俺たちは
偶然にも500万個のSSH公開鍵を手に入れた俺たちは
zval をダイエットしてみた
zval をダイエットしてみた
Zend OPcacheの速さの秘密を探る
Zend OPcacheの速さの秘密を探る
浮動小数点数の話 2013年度版
浮動小数点数の話 2013年度版
PHP7の内部実装から学ぶ性能改善テクニック
1.
A remarkable improvement
on data structure in PHP7 PHP7の内部実装から学ぶ 性能改善テクニック hnw Developers Summit 2015 KANSAI (2015/9/4)発表資料
2.
自己紹介 ❖ @hnw ❖ 勤務先:KLab株式会社 ❖
カレーとバグが大好物 ❖ PHP歴15年 ❖ PHPや周辺エクステンションにバグレポ・PR多数
3.
アジェンダ ❖ さいきんのPHP7 ❖ PHP7の新機能 ❖
PHP7って速いの? ❖ どこがボトルネック? ❖ PHP7のデータ構造
4.
まずはアンケート
5.
普段PHPを 書いている方?
6.
実際にPHP7を 試したことがある方?
7.
❖ さいきんのPHP7 ❖ PHP7の新機能 ❖
PHP7って速いの? ❖ どこがボトルネック? ❖ PHP7のデータ構造
8.
PHP7? ❖ PHP 5.6.xの次のバージョンがPHP
7.0.0 ❖ PHP6はスキップ ❖ 約10年ぶりのメジャーバージョンアップ
9.
さいきんのPHP7 ❖ 予定通りalphaバージョン、betaバージョンをリリース ❖ 現在最新はPHP
7.0.0 RC1 ❖ 11月に正式版リリース予定
10.
PHP7、どれくらい変わる? ❖ PHP7で採択されたRFCは48個 ❖ 参考:PHP
5.6は17個、PHP 5.5は20個 →普段のマイナーバージョンアップよりは変化が大きい
11.
PHPのRFCシステム ❖ 新機能の導入にはRFCと呼ばれる説明ページが必要 ❖ 提案内容や変更による影響などを書く ❖
MLで議論後、投票によって採用・不採用が決まる ❖ 過半数または2/3以上の同意が必要(内容による) ❖ スピード感は無いが、十分機能している印象 ❖ 議論を追うのに非常に便利
12.
PHP7で変わらないこと ❖ PHPは言語仕様の変更に対して非常に保守的 ❖ PHP7でも後方互換性は重視されている ❖
移行コストは十分低いはず
13.
❖ さいきんのPHP7 ❖ PHP7の新機能 ❖
PHP7って速いの? ❖ どこがボトルネック? ❖ PHP7のデータ構造
14.
致命的エラーが例外になった ❖ PHP5までの致命的エラー ❖ エラーハンドリングできず、即座に終了していた ❖
PHP7の致命的エラー ❖ Errorという新しい例外になった ❖ トップレベルに到達すると今まで通りのエラーになる →ユニットテストで致命的エラーから復帰できる
15.
??演算子の新設 ❖ nullでなければその値を、nullなら右オペランドを返す ❖ isset()と同様に未定義値に対しても使える ❖
ようやくisset()地獄から解放されるぞ!
16.
無名クラスの導入 ❖ クラス定義と同時にインスタンス化できる構文を導入 ❖ その場限りのインスタンスを作りたいときに便利
17.
AST(抽象構文木)の導入 ❖ 解釈フェーズが 1段増えた ❖ 難しい文法が導入 できるようになった ❖
opcodeの最適化を 行うようになった Zend VM opcode Parser Lexer token PHP Zend VM opcode Parser Lexer token PHP Opcode Compiler AST PHP 5 PHP 7
18.
返り値のタイプヒントをサポート ❖ 関数の返り値に型が指定できるようになった ❖ 抽象クラスやインターフェースで指定すると便利
19.
スカラ型のタイプヒントをサポート ❖ 以下の型が引数・返り値で指定できるようになった ❖ int型 ❖
float型 ❖ string型 ❖ bool型 ❖ 議論が続いていたが、ついに決着
20.
非推奨だった機能を廃止 ❖ PHP5.6までに非推奨になった機能をPHP7で廃止 ❖ ereg関数(preg関数使ってね) ❖
mysql関数(mysqli関数かPDO使ってね) ❖ その他
21.
アジェンダ ❖ さいきんのPHP7 ❖ PHP7の新機能 ❖
PHP7って速いの? ❖ どこがボトルネック? ❖ PHP7のデータ構造
22.
PHP7は速いらしい ❖ 「PHP5より倍速い」 ❖ 「HHVMとほぼ互角」 ❖
ホントに?
23.
PHP7の性能(1) Zeevのブログ記事(2014/7)より
24.
PHP7の性能(2) DmitryのZendCon 2014での発表(2014/10)より
25.
PHP7の性能(3) RasmusのFluent 2015での発表(2015/4)より
26.
PHP7の性能(4) ❖ 性能改善を積み重ねてきたことがわかる
27.
速くなりすぎ? ❖ PHP7は確かに速い ❖ 約1年間で2倍の高速化(WordPressで比較) ❖
今までも性能改善をサボっていたわけじゃない ❖ 過去10年間(PHP5.0→5.6)で2倍の高速化 ❖ 5.4以降は頭打ちの感さえあった
28.
何があったのか? ❖ メジャーバージョンアップならではの大手術 ❖ 基本的なデータ構造の変更 ❖
高速化チームの裁量が大きかった ❖ RFC「Move the phpng branch into master」 ❖ 様々なアイデアを約1年間に渡って実現
29.
❖ さいきんのPHP7 ❖ PHP7の新機能 ❖
PHP7って速いの? ❖ どこがボトルネック? ❖ PHP7のデータ構造
30.
性能改善に「銀の弾丸」はない ❖ 性能改善:ボトルネックを順につぶしていく作業 ❖ 一発で改善、みたいなことは滅多にない ❖
ボトルネック以外の箇所をいくら改善してもムダ ❖ ボトルネックを見つけるところからスタート
31.
PHP7チームが見つけたボトルネック ❖ PHP5でベンチマークテストしてみた ❖ メモリアロケーション・ハッシュ操作の時間
30% ❖ 内部関数の実行時間 30% ❖ VMの実行時間 30% ❖ その他 10%
32.
PHP7チームが見つけたボトルネック ❖ PHP5でベンチマークテストしてみた ❖ メモリアロケーション・ハッシュ操作の時間
30% ❖ 内部関数の実行時間 30% ❖ VMの実行時間 30% ❖ その他 10% この辺は今までチューニングしてきた
33.
PHP7チームが見つけたボトルネック ❖ PHP5でベンチマークテストしてみた ❖ メモリアロケーション・ハッシュ操作の時間
30% ❖ 内部関数の実行時間 30% ❖ VMの実行時間 30% ❖ その他 10% ほぼ手つかず、改善の余地ありそう
34.
メモリ周りがボトルネック候補 ❖ 具体的に何をすればいいのか? ❖ 普段のチューニングとは違う知識が必要
35.
Q. 何がボトルネック? ❖ N次元行列の行列積の実行時間(C言語で記述)
36.
行列積(擬似コード)
37.
Q. 何がボトルネック? ❖ 急に5倍ほど遅くなっている ?
38.
答: L3キャッシュミス ❖ 行列全体がキャッシュに乗り切らなくなった →CPUコアは余裕があるのにメモリで待たされる ❖
行列積の計算では同じ要素のreadがN回発生 ❖ 2回目以降キャッシュヒットするかどうかの差
39.
キャッシュの階層構造 L3 cache L1 cache L2
cache CPU core memory L1 cache L2 cache CPU core ❖ 一般に、上位キャッシュほど速くて小さい
40.
メモリの遅さ ❖ CPU 1クロックサイクル:0.3ns ❖
L1キャッシュヒット:1.2ns ❖ L2キャッシュヒット:3ns ❖ L3キャッシュヒット:12ns ❖ メモリアクセス:60-100ns 雑に言うと、メモリアクセス1回の間に演算300回できる
41.
メモリの遅さ ❖ メモリアクセスはボトルネックになりやすい ❖ CPUに対して相対的に遅い ❖
キャッシュを有効に使えるかどうかが重要 ❖ 上位キャッシュのヒット率アップ→性能改善 ❖ 例:データ構造のムダを削る
42.
キャッシュライン ❖ キャッシュは「キャッシュライン」単位で行われる ❖ キャッシュラインサイズ:64bytesなど ❖
連続したメモリ領域が一度にキャッシュされる ❖ 同時に使うデータは近いメモリ領域に置くと有利
43.
メモリ関連の最適化 ❖ キャッシュヒット率を向上 ❖ 可能な範囲でデータサイズを削る ❖
キャッシュラインを意識 ❖ 同時に使うデータは近いメモリ領域に配置する PHP7でも、このような最適化が行われている
44.
❖ さいきんのPHP7 ❖ PHP7の新機能 ❖
PHP7って速いの? ❖ どこがボトルネック? ❖ PHP7のデータ構造
45.
データ構造の変更 ❖ PHP7では性能改善のためデータ構造を見直した ❖ PHPの変数(zval) ❖
文字列(zend_string) ❖ 配列(HashTable / Bucket)
46.
PHP5のzval(int型) ❖ 未使用領域が多い (intの場合24bytes中10bytes) ❖ 必ずポインタ参照 ❖
参照カウンタを持つ、コピーオンライト
47.
PHP7のzval(int型) ❖ 計16bytes ❖ 参照カウントしない、代入では常にコピー
48.
PHP7のzvalへの評価 ❖ メモリ上のムダな隙間を減らす変更 ❖ ポインタ参照が1段減った ❖
int型・float型・bool型でコピーオンライト廃止 →サイズ削減によりキャッシュヒット率向上
49.
PHP5のzval(string型) ❖ 文字列長と文字列本体が別の領域になっている pointer refcount type
unusedis_ref unused pointer to zval string length string characters zval
50.
PHP7のzval(string型) ❖ 文字列長と文字列本体を連続領域に配置 ❖ 参照カウントあり、同じ文字列は使い回す string
characters flags pointer type reservedflags refcount type gc_info hash_value string length zend_string zval
51.
PHP7の文字列への評価 ❖ 文字列長と文字列本体を連続領域に配置 →キャッシュラインを意識した変更
52.
ねんがんの配列をてにいれたぞ! ❖ PHP7から、「本物の配列」が導入されました ! 「いままで配列なかったの?」 「はい」
53.
配列とは ❖ (典型的には)連続するメモリ領域を確保する ❖ インデックスは0から連続する数字 ❖
読み書きが高速 リンゴ バナナ トマト ニンジン 0 1 2 3
54.
連想配列とは ❖ 文字列をキーにできる ❖ そこそこ読み書きも速い(配列よりは遅い) "apple" 0 "banana"
"carrot" 1 2 3 4 5 6 7 キーのハッシュ値を計算 "apple"=>リンゴ"banana"=>バナナ "tomato"=>トマト "tomato" "carrot"=>ニンジン
55.
PHP5の配列 ❖ PHP5までは連想配列しか無かった ❖ $array[1]でも連想配列アクセスしていた ❖
配列より複雑な構造、キャッシュに優しくない
56.
PHP5の配列 nTableSize nNextFreeElement HashTable nTableMask nNumOfElements pListTail arBuckets unused pInternalPointer pListHead pDestructor nApp lyCo unt persi stent bAppl yProte ction unused h nKeyLength unused pData pDataPtr pListNext pListLast pNext pLast arKey Bucket zval pointer to
Bucket (Bucket *)[] pointer to Bucket pointer to Bucket pointer to Bucket Another(Bucket*) whichisinthesamehashbin
57.
PHP7の配列 ❖ PHP7から配列と連想配列が別の構造になった ❖ 配列のときはハッシュテーブルが省略される ❖
内部で自動的に選択される ❖ 配列・連想配列のデータは連続領域に置かれる
58.
PHP7の配列 arData flagsrefcount type gc_info zend_array u
nTableMask nNumUsed nNumOfElements nTableSize nInternalPointer nNextFreeElement pDestructor zval Bucket[] h (hash value) key (キーへのポインタ) h key 0 1 h key 2 zval zval ❖ 他言語の配列と同じ構造 (数字キーのみの場合)
59.
PHP7の配列への評価 ❖ 配列と連想配列の区別ができた ❖ 配列のときのムダが減った ❖
データが連続領域に置かれるようになった ❖ 1要素あたりデータサイズ減少(72bytes→32bytes) →キャッシュヒット率・キャッシュラインを意識した変更
60.
PHP7の新データ構造 ❖ 3つともキャッシュを意識したデータ構造 ❖ 性能面でインパクトの大きい変更 ❖
「PHPなかなかやるじゃん」
61.
PHP7の新データ構造 ❖ 3つともキャッシュを意識したデータ構造 ❖ 性能面でインパクトの大きい変更 ❖
「PHPなかなかやるじゃん」 ❖ 他の言語では以前から採用されている ❖ Python、Ruby、JavaScriptエンジン
62.
性能改善の面白さ ❖ 隣接領域の知識が役立つことがある ❖ 言語処理系ならCPUやメモリの知識 ❖
Webアプリならミドルウェア・ネットワークの知識
63.
まとめ ❖ PHP7は高速、PHP5.6の倍程度の性能 ❖ オシャレな新機能を採用 ❖
現代のCPUに合わせたデータ構造変更を行った ❖ データサイズ削減(キャッシュヒット率向上) ❖ 連続領域にデータを配置(キャッシュラインを意識)
64.
ご静聴 ありがとう ございました
Download now