Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Yahoo!デベロッパーネットワーク
9,794 views
PHPコアから読み解くPHP5.5
PHPカンファレンス2014にて発表した内容です。
Software
◦
Read more
9
Save
Share
Embed
Embed presentation
Download
Downloaded 29 times
1
/ 83
2
/ 83
3
/ 83
4
/ 83
5
/ 83
6
/ 83
7
/ 83
8
/ 83
9
/ 83
10
/ 83
11
/ 83
12
/ 83
13
/ 83
14
/ 83
15
/ 83
16
/ 83
17
/ 83
18
/ 83
19
/ 83
20
/ 83
21
/ 83
22
/ 83
23
/ 83
24
/ 83
25
/ 83
26
/ 83
27
/ 83
28
/ 83
29
/ 83
30
/ 83
31
/ 83
32
/ 83
33
/ 83
34
/ 83
35
/ 83
36
/ 83
37
/ 83
38
/ 83
39
/ 83
40
/ 83
41
/ 83
42
/ 83
43
/ 83
44
/ 83
45
/ 83
46
/ 83
47
/ 83
48
/ 83
49
/ 83
50
/ 83
51
/ 83
52
/ 83
53
/ 83
54
/ 83
55
/ 83
56
/ 83
57
/ 83
58
/ 83
59
/ 83
60
/ 83
61
/ 83
62
/ 83
63
/ 83
64
/ 83
65
/ 83
66
/ 83
67
/ 83
68
/ 83
69
/ 83
70
/ 83
71
/ 83
72
/ 83
73
/ 83
74
/ 83
75
/ 83
76
/ 83
77
/ 83
78
/ 83
79
/ 83
80
/ 83
81
/ 83
82
/ 83
83
/ 83
More Related Content
PDF
PHPにおけるI/O多重化とyield
by
Yahoo!デベロッパーネットワーク
PDF
PHPの今とこれから2019
by
Rui Hirokawa
PDF
Hack/HHVM 入門
by
y-uti
PDF
PHPの今とこれから 2013
by
Rui Hirokawa
PDF
PHPの今とこれから2014
by
Rui Hirokawa
PDF
PHPの今とこれから2020
by
Rui Hirokawa
PDF
PHPの今とこれから2021
by
Rui Hirokawa
PDF
Good Parts of PHP and the UNIX Philosophy
by
Yuya Takeyama
PHPにおけるI/O多重化とyield
by
Yahoo!デベロッパーネットワーク
PHPの今とこれから2019
by
Rui Hirokawa
Hack/HHVM 入門
by
y-uti
PHPの今とこれから 2013
by
Rui Hirokawa
PHPの今とこれから2014
by
Rui Hirokawa
PHPの今とこれから2020
by
Rui Hirokawa
PHPの今とこれから2021
by
Rui Hirokawa
Good Parts of PHP and the UNIX Philosophy
by
Yuya Takeyama
What's hot
PPTX
PHP と SAPI と ZendEngine3 と
by
do_aki
PPTX
PHP AST 徹底解説
by
do_aki
PPTX
PHP AST 徹底解説(補遺)
by
do_aki
PDF
15分でCakePHPを始める方法(Nseg 2013-11-09 )
by
hiro345
PPTX
php-src の歩き方
by
do_aki
PDF
Continuation with Boost.Context
by
Akira Takahashi
PDF
20分くらいでわかった気分になれるC++20コルーチン
by
yohhoy
ODP
Introduction of Python
by
Tomoya Nakayama
PDF
Modern PHP Programming @ PFI Seminar
by
Sotaro Karasawa
PDF
最新PHP事情 (2000年7月22日,PHPカンファレンス)
by
Rui Hirokawa
PPT
PHP, Now and Then 2011
by
Rui Hirokawa
PDF
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
by
Kei IWASAKI
PDF
HHVM Hack
by
Masaaki Yonebayashi
PDF
実"戦"CakePHP Plugin
by
Kenichirou Oyama
PDF
PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)
by
Rui Hirokawa
PDF
最近の PHP の話
by
y-uti
PDF
Cloud TPU Driver API ソースコード解析
by
Mr. Vengineer
PHP と SAPI と ZendEngine3 と
by
do_aki
PHP AST 徹底解説
by
do_aki
PHP AST 徹底解説(補遺)
by
do_aki
15分でCakePHPを始める方法(Nseg 2013-11-09 )
by
hiro345
php-src の歩き方
by
do_aki
Continuation with Boost.Context
by
Akira Takahashi
20分くらいでわかった気分になれるC++20コルーチン
by
yohhoy
Introduction of Python
by
Tomoya Nakayama
Modern PHP Programming @ PFI Seminar
by
Sotaro Karasawa
最新PHP事情 (2000年7月22日,PHPカンファレンス)
by
Rui Hirokawa
PHP, Now and Then 2011
by
Rui Hirokawa
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
by
Kei IWASAKI
HHVM Hack
by
Masaaki Yonebayashi
実"戦"CakePHP Plugin
by
Kenichirou Oyama
PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)
by
Rui Hirokawa
最近の PHP の話
by
y-uti
Cloud TPU Driver API ソースコード解析
by
Mr. Vengineer
Viewers also liked
PPTX
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
by
Hiroshi Tokumaru
PDF
クラウド時代だからこそ見直したい PHPアプリケーションのパフォーマンスチューニング
by
Terui Masashi
PPTX
SQLまで使える高機能NoSQLであるCouchbase Serverの勉強会資料
by
樽八 仲川
PDF
ストリートアカデミー_ローンチ前企画書
by
Find Job Startup
PPTX
MongoDB3.2の紹介
by
Tetsutaro Watanabe
PDF
PHP カンファレンス 2014 に行ってきたよ
by
Masaru Matsuo
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
by
Hiroshi Tokumaru
クラウド時代だからこそ見直したい PHPアプリケーションのパフォーマンスチューニング
by
Terui Masashi
SQLまで使える高機能NoSQLであるCouchbase Serverの勉強会資料
by
樽八 仲川
ストリートアカデミー_ローンチ前企画書
by
Find Job Startup
MongoDB3.2の紹介
by
Tetsutaro Watanabe
PHP カンファレンス 2014 に行ってきたよ
by
Masaru Matsuo
Similar to PHPコアから読み解くPHP5.5
PDF
PHPの今とこれから2025 (PHP Conference Japan 2025)
by
Rui Hirokawa
PDF
PHPの今とこれから2023
by
Rui Hirokawa
PDF
PHP初心者セッション2023 〜ChatGPT時代の簡単な始め方〜
by
Hideo Kashioka
PPTX
PHPCON_TOKYO_2022_Bigginer.pptx
by
Hideo Kashioka
PDF
PHPの今とこれから2024 at PHP Conference Japan 2024
by
Rui Hirokawa
PDF
PHPの今とこれから2015
by
Rui Hirokawa
PDF
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
by
sasezaki
PDF
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
by
Junichi Ishida
PDF
PHPの今とこれから2016
by
Rui Hirokawa
PDF
Php5.4
by
ke-m kamekoopa
PDF
PECL operator で演算子オーバーロード
by
y-uti
PDF
PHP5.5新機能「ジェネレータ」初心者入門
by
kwatch
PPTX
PHP基礎勉強会
by
Yuji Otani
PDF
PHPの教室「foreachを極める」
by
Yusuke Ando
PDF
PHP language update 201211
by
Moriyoshi Koizumi
PDF
Local php-100828 2
by
Akio Ishida
PDF
PHPの今とこれから2017
by
Rui Hirokawa
PPTX
第4回 PHPのおさらい
by
Sawada Makoto
PDF
Php5.5についてのメモ
by
ryuji inamoto
PDF
徹底攻略!PHP5.4
by
Takuya Sato
PHPの今とこれから2025 (PHP Conference Japan 2025)
by
Rui Hirokawa
PHPの今とこれから2023
by
Rui Hirokawa
PHP初心者セッション2023 〜ChatGPT時代の簡単な始め方〜
by
Hideo Kashioka
PHPCON_TOKYO_2022_Bigginer.pptx
by
Hideo Kashioka
PHPの今とこれから2024 at PHP Conference Japan 2024
by
Rui Hirokawa
PHPの今とこれから2015
by
Rui Hirokawa
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
by
sasezaki
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
by
Junichi Ishida
PHPの今とこれから2016
by
Rui Hirokawa
Php5.4
by
ke-m kamekoopa
PECL operator で演算子オーバーロード
by
y-uti
PHP5.5新機能「ジェネレータ」初心者入門
by
kwatch
PHP基礎勉強会
by
Yuji Otani
PHPの教室「foreachを極める」
by
Yusuke Ando
PHP language update 201211
by
Moriyoshi Koizumi
Local php-100828 2
by
Akio Ishida
PHPの今とこれから2017
by
Rui Hirokawa
第4回 PHPのおさらい
by
Sawada Makoto
Php5.5についてのメモ
by
ryuji inamoto
徹底攻略!PHP5.4
by
Takuya Sato
More from Yahoo!デベロッパーネットワーク
PDF
「新しいおうち探し」のためのAIアシスト検索 #yjtc
by
Yahoo!デベロッパーネットワーク
PDF
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
by
Yahoo!デベロッパーネットワーク
PDF
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
by
Yahoo!デベロッパーネットワーク
PDF
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
by
Yahoo!デベロッパーネットワーク
PDF
ゼロから始める転移学習
by
Yahoo!デベロッパーネットワーク
PDF
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
by
Yahoo!デベロッパーネットワーク
PDF
Persistent-memory-native Database High-availability Feature
by
Yahoo!デベロッパーネットワーク
PDF
サイエンス領域におけるMLOpsの取り組み #yjtc
by
Yahoo!デベロッパーネットワーク
PDF
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
by
Yahoo!デベロッパーネットワーク
PDF
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
by
Yahoo!デベロッパーネットワーク
PDF
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
by
Yahoo!デベロッパーネットワーク
PDF
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
by
Yahoo!デベロッパーネットワーク
PDF
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
by
Yahoo!デベロッパーネットワーク
PDF
LakeTahoe
by
Yahoo!デベロッパーネットワーク
PDF
継続的なモデルモニタリングを実現するKubernetes Operator
by
Yahoo!デベロッパーネットワーク
PDF
ビッグデータから人々のムードを捉える #yjtc
by
Yahoo!デベロッパーネットワーク
PDF
eコマースと実店舗の相互利益を目指したデザイン #yjtc
by
Yahoo!デベロッパーネットワーク
PDF
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
by
Yahoo!デベロッパーネットワーク
PDF
オンプレML基盤on Kubernetes パネルディスカッション
by
Yahoo!デベロッパーネットワーク
PDF
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
by
Yahoo!デベロッパーネットワーク
「新しいおうち探し」のためのAIアシスト検索 #yjtc
by
Yahoo!デベロッパーネットワーク
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
by
Yahoo!デベロッパーネットワーク
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
by
Yahoo!デベロッパーネットワーク
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
by
Yahoo!デベロッパーネットワーク
ゼロから始める転移学習
by
Yahoo!デベロッパーネットワーク
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
by
Yahoo!デベロッパーネットワーク
Persistent-memory-native Database High-availability Feature
by
Yahoo!デベロッパーネットワーク
サイエンス領域におけるMLOpsの取り組み #yjtc
by
Yahoo!デベロッパーネットワーク
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
by
Yahoo!デベロッパーネットワーク
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
by
Yahoo!デベロッパーネットワーク
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
by
Yahoo!デベロッパーネットワーク
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
by
Yahoo!デベロッパーネットワーク
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
by
Yahoo!デベロッパーネットワーク
LakeTahoe
by
Yahoo!デベロッパーネットワーク
継続的なモデルモニタリングを実現するKubernetes Operator
by
Yahoo!デベロッパーネットワーク
ビッグデータから人々のムードを捉える #yjtc
by
Yahoo!デベロッパーネットワーク
eコマースと実店舗の相互利益を目指したデザイン #yjtc
by
Yahoo!デベロッパーネットワーク
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
by
Yahoo!デベロッパーネットワーク
オンプレML基盤on Kubernetes パネルディスカッション
by
Yahoo!デベロッパーネットワーク
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
by
Yahoo!デベロッパーネットワーク
PHPコアから読み解くPHP5.5
1.
1 ヤフー株式会社 蒋池
東龍 (こもいけ とうりゅう) PHPコアから読み解く PHP5.5
2.
2 レジュメ •最初に(1分)
•PHPコアとは?(3分) •PHP5.5の主な新機能や変更点(2分) •yield のコスト(10分) •boolval() の可否(8分) •zend_execute の実体化(5分) •終わりに(1分) Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
3.
3 Copyright (C)
2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 最初に
4.
4 最初に PHP5.5
以上を使っていますか? Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
5.
5 最初に PHPコア
という言葉を 聞いたことがありますか? Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
6.
6 最初に Zend
Engine という言葉を 聞いたことがありますか? Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
7.
7 Copyright (C)
2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 PHPコアとは?
8.
8 PHPコアとは? PHPコアは
PHPの内部システムで C言語によって 記述されています Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
9.
9 PHPコアとは? PHPコアの
言語エンジンは Zend Engine と呼ばれています Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
10.
10 PHPコアとは? Zend
Engine は PHPスクリプトを 字句解析・構文解析して オペコードと呼ばれる 命令を作り出して実行します Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
11.
11 PHPコアとは? OS
Apache Apacheモジュール PHPフレームワーク zendライブラリ phpライブラリ モジュール スクリプト PHPコア php_* ライブラリ zend_* ライブラリ Zend Engine 字句解析 構文解析 実行 オペコード Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
12.
12 PHPコアとは? PHPコアを知れば
PHPがどのように 動いているのか 理解できます Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
13.
13 Copyright (C)
2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 PHP5.5の主な新機能や変更点
14.
14 PHP5.5の主な新機能や変更点 PHP5.5の主な
新機能や変更点は 次の通りでした (2014/8/28 に PHP5.6 が current stable) Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
15.
15 PHP5.5の主な新機能や変更点 •ジェネレーターの追加
•finally キーワードの追加 •新しいパスワードハッシュAPI(password_*)追加 •foreach が list() に対応 •empty() が任意の式に対応 •array リテラルと string リテラルのデリファレンス •OPcache 拡張モジュールの追加 •array_column() 追加 •boolval() 追加 •json_last_error_msg() 追加 •zend_execute() オーバーライド不可 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
16.
16 PHP5.5の主な新機能や変更点 •ジェネレーターの追加
← 新構文 •finally キーワードの追加 •新しいパスワードハッシュAPI(password_*)追加 •foreach が list() に対応 •empty() が任意の式に対応 •array リテラルと string リテラルのデリファレンス •OPcache 拡張モジュールの追加 •array_column() 追加 •boolval() 追加 ← 新関数 •json_last_error_msg() 追加 •zend_execute() オーバーライド不可 ← 内部変更点 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
17.
17 PHP5.5の主な新機能や変更点 赤字の項目について
利用の是非や注意点を PHPコアの観点から ご紹介します! Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
18.
18 Copyright (C)
2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 yield のコスト
19.
19 yield のコスト
yield を使っている方はいますか? Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
20.
20 yield のコスト
yield は簡単に イテレータを 実装できる機能です Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
21.
21 yield のコスト
イテレータは データの要素に アクセスするための 仕組みです Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
22.
22 yield のコスト
3つのファイルに それぞれ別の処理を行う スクリプトを例にとって みてみましょう Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
23.
23 yield のコスト
yield を使わないスクリプト Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
24.
24 yield のコスト
$file = fopen('./sample1.txt', 'r'); while(false !== ($line = fgets($file) ) ){ $line = trim($line); $text = $tmp . $line . "¥n"; echo($text); $tmp = $line; } fclose($file); 現在の行に前の行を 加えて表示 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
25.
25 yield のコスト
$file = fopen('./sample2.txt', 'r'); while(false !== ($line = fgets($file) ) ){ $line = trim($line); $text = strtoupper($line) . "¥n"; echo($text); } fclose($file); 現在の行を 大文字にして表示 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
26.
26 yield のコスト
$file = fopen('./sample3.txt', 'r'); while(false !== ($line = fgets($file) ) ){ $line = trim($line); $text = $line . ':' . md5($line) . "¥n"; echo($text); } fclose($file); 現在の行と md5 を表示 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
27.
27 yield のコスト
ファイルをオープンして 1行ずつ読み込み ファイルをクローズする 処理を毎回行っています Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
28.
28 yield のコスト
yield を使ったスクリプト Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
29.
29 yield のコスト
function file_lines($_filename){ $file = fopen($_filename, 'r'); while(false !== ($line = fgets($file) ) ){ $line = trim($line); yield $line; } fclose($file); } ファイルをオープンして 1行ずつ読み込み ファイルをクローズ Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
30.
30 yield のコスト
foreach(file_lines('./sample1.txt') as $line){ $text = $tmp . $line . "¥n"; echo($text); $tmp = $line; } 現在の行に前の行を 加えて表示 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
31.
31 yield のコスト
foreach(file_lines('./sample2.txt') as $line){ $text = strtoupper($line) . "¥n"; echo($text); } Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 現在の行を 大文字にして表示
32.
32 yield のコスト
foreach(file_lines('./sample3.txt') as $line){ $text = $line . ':' . md5($line) . "¥n"; echo($text); } 現在の行と md5 を表示 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
33.
33 yield のコスト
yield を使えば 共通するイテレーション処理を 1度定義するだけでよいです Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
34.
34 yield のコスト
yield を使わない スクリプトの オペコードを 確認してみましょう Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
35.
35 yield のコスト
0 SEND_VAL 1 SEND_VAL 2 DO_FCALL 3 ASSIGN 4 SEND_VAR 5 DO_FCALL 6 ASSIGN 7 IS_NOT_IDENTICAL 8 JMPZ 9 SEND_VAR 10 DO_FCALL 11 ASSIGN 12 CONCAT 13 CONCAT 14 ASSIGN 15 ECHO 16 ASSIGN 17 JMP 18 SEND_VAR 19DO_FCALL …… 60 RETURN オペコードは 60個 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
36.
36 yield のコスト
yield を使った スクリプトの オペコードを 確認してみましょう Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
37.
37 yield のコスト
0 RECV 1 SEND_VAR 2 SEND_VAL 3 DO_FCALL 4 ASSIGN 5 SEND_VAR 6 DO_FCALL 7 ASSIGN 8 IS_NOT_IDENTICAL 9 JMPZ 10 SEND_VAR 11 DO_FCALL 12 ASSIGN 13 YIELD 14 JMP 15 SEND_VAR 16 DO_FCALL 17 GENERATOR_RETURN 関数の オペコードは 17個 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
38.
38 yield のコスト
0 INIT_FCALL_BY_NAME 1 SEND_VAL 2 DO_FCALL_BY_NAME 3 FE_RESET 4 FE_FETCH 5 OP_DATA 6 ASSIGN 7 CONCAT 8 CONCAT 9 ASSIGN 10 ECHO 11 ASSIGN 12 JMP 13 SWITCH_FREE …… 44 NOP 45 RETURN メイン処理の オペコードは45個 全部で62個 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
39.
39 yield のコスト
yield を使ったスクリプトと 使わないスクリプトの 処理速度を比べてみましょう Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
40.
40 yield のコスト
……と、その前に どちらの方が早いと 思いますか? Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
41.
41 yield のコスト
yield を使うスクリプト 0.0034639835357666 usec yield を使わないスクリプト 0.004425048828125 usec Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
42.
42 yield のコスト
yield を使うと…… • コードがすっきりする • 処理が速くなる (遅くならない) • オペコードは短くならない (共通部分に依存する) Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
43.
43 yield のコスト
簡単にイテレータを 実装できるので 積極的に使いましょう! 結論 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
44.
44 Copyright (C)
2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 boolval() の可否
45.
45 boolval() の可否
boolval() を使っている方はいますか? Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
46.
46 boolval() の可否
boolval() は boolean として 値を取得できる 関数です Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
47.
47 boolval() の可否
値の型を変換する cast と 同じ機能です Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
48.
48 boolval() の可否
様々な型の値を 変換するスクリプトを 例にとってみてみましょう Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
49.
49 boolval() の可否
cast を使ったスクリプト Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
50.
$max = 1000;
$arr = array('aaa', 'bbb' , 'ccc'); class A{}; $ca = new A(); for($i = 0; $i < $max; $i++){ $ret = (bool)(1000); $ret = (bool)('abc'); $ret = (bool)($arr); $ret = (bool)($ca); } 50 boolval() の可否 色々な値を cast Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
51.
51 boolval() の可否
boolval() を使ったスクリプト Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
52.
$max = 1000;
$arr = array('aaa', 'bbb' , 'ccc'); class A{}; $ca = new A(); for($i = 0; $i < $max; $i++){ $ret = boolval(1000); $ret = boolval('abc'); $ret = boolval($arr); $ret = boolval($ca); } 52 boolval() の可否 色々な値を boolval() Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
53.
53 boolval() の可否
cast を使った スクリプトの オペコードを みてみましょう Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
54.
54 boolval() の可否
…… 16 CAST 17 ASSIGN 18 CAST 19 ASSIGN 20 CAST 21 ASSIGN 22 CAST 23 ASSIGN 24 JMP 25 RETURN オペコードは 25個 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
55.
55 boolval() の可否
boolval() を 使ったスクリプトの オペコードを みてみましょう Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
56.
56 boolval() の可否
…… 16 SEND_VAL 17 DO_FCALL 18 ASSIGN 19 SEND_VAL 20 DO_FCALL 21 ASSIGN 22 SEND_VAR 23 DO_FCALL 24 ASSIGN 25 SEND_VAR 26 DO_FCALL 27 ASSIGN 28 JMP 29 RETURN オペコードは 29個 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
57.
57 boolval() の可否
cast を使ったスクリプトと boolval() を使ったスクリプトの 処理速度を比べてみましょう Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
58.
58 boolval() の可否
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 ……と、その前に どちらの方が早いと 思いますか?
59.
59 boolval() の可否
boolval() を使ったスクリプト 0.0013551712036133 usec cast を使ったスクリプト 0.0006558895111084 usec Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
60.
60 boolval() の可否
boolval() を使うと…… • コールバックとして渡せる • 処理が遅くなる • オペコードが多くなる Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
61.
61 boolval() の可否
できる限り cast を使いましょう! 結論 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
62.
62 Copyright (C)
2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 zend_execute の実体化
63.
63 zend_execute の実体化
execute 系関数は オペコードを実行する 非常に重要な関数です Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
64.
64 zend_execute の実体化
実行処理を オーバーライドする時に 熟知が必要です Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
65.
65 zend_execute の実体化
PHP5.5 以前と以後では 扱い方が異なるので みてみましょう Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
66.
66 zend_execute の実体化
PHP5.5 以前 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
67.
// execute は関数
ZEND_API void execute( zend_op_array *op_array TSRMLS_DC); // zend_execute は関数ポインタ ZEND_API void (*zend_execute)( zend_op_array *op_array TSRMLS_DC); 67 zend_execute の実体化 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
68.
// zend_execute に
execute を代入 zend_execute = execute; // zend_execute を実行 zend_execute(...); 68 zend_execute の実体化 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
69.
69 zend_execute の実体化
PHP5.5 以後 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
70.
// execute_ex は関数
ZEND_API void execute_ex( zend_execute_data *execute_data TSRMLS_DC) // zend_execute_ex は関数ポインタ ZEND_API void (*zend_execute_ex)( zend_execute_data *execute_data TSRMLS_DC); 70 zend_execute の実体化 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
71.
// zend_execute_ex に
execute_ex を代入 zend_execute_ex = execute_ex; // zend_execute は zend_execute_exを実行する関数 ZEND_API void zend_execute( zend_op_array *op_array TSRMLS_DC); // zend_execute を実行 zend_execute(...); 71 zend_execute の実体化 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
72.
72 zend_execute の実体化
PHP5.5 以前と以後の execute 系関数を 比べてみましょう Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
73.
73 zend_execute の実体化
シンボル 説明 PHP5.5 以前 PHP5.5 以後 execute_ex 関数の実体 × ○ zend_execute_ex execute_ex を代入 × △ execute 関数の実体 ○ × zend_execute PHP5.5 以前と 以後で存在するが 扱いは異なる △ ○ ○:関数 △:関数ポインタ ×:なし Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
74.
74 zend_execute の実体化
役割 PHP5.5 以前 PHP5.5 以後 実行関数 execute execute_ex 関数ポインタ zend_execute zend_execute_ex ラッパー関数 - zend_execute Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 内部的な _ex 系関数に移行したが zend_execute は健在
75.
75 zend_execute の実体化
zend_execute() ↓ (*zend_execute_ex)() = execute_ex() Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
76.
76 zend_execute の実体化
実行処理を オーバーライド したければ…… • zend_execute_ex に 関数のポインタを代入する Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
77.
77 zend_execute の実体化
execute 系関数の 取り扱いに 気を付けましょう! 結論 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
78.
78 Copyright (C)
2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 終わりに
79.
79 終わりに 構文や関数について
新しい気付きや興味は 得られましたか? Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
80.
80 終わりに PHP
に対する 理解が深まるので PHPコアについて 是非興味をもってください! Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
81.
81 ありがとうございました Copyright
(C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
82.
82 ! Copyright
(C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
83.
83 Copyright (C)
2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 Yahoo! JAPANブースにお立ち寄りください アンケートにご回答いただいた方に Yahoo! JAPANオリジナルグッズを 差し上げています
Download