SlideShare a Scribd company logo
1 of 27
Download to read offline
「PHPコアから読み解く 定石の嘘ホント」より
@akirakoyasu
PHP CONFERENCE
2013 9/14 Sat. 大田区産業プラザPiO
Copyright © 2013 Akira Koyasu. Some rights reserved.
Theory
2
定石、定跡(じょうせき)とは、アブストラクトゲームに
おける用語である。お互いが最善と考えられる手を行った
場合の一連の手のこと。チェスでは、「セオリー」とも。
石を用いる囲碁、オセロ、連珠などでは「定石」が、駒を
用いる将棋、チェスなどでは「定跡」が用いられる。
- ja.wikipedia.org
photo#1
Copyright © 2013 Akira Koyasu. Some rights reserved. 3
Rule
2つのコードを見せます
どちらが速く動くか考えてください
考える時間は10秒
相談しないで!
Copyright © 2013 Akira Koyasu. Some rights reserved.
Execution Time
4
$time1 = microtime(true);
// test code loop (100000 times)
$time2 = microtime(true);
printf("time: %f sn", ($time2 - $time1));
Copyright © 2013 Akira Koyasu. Some rights reserved.
opcode
5
$ sudo pecl install channel://pecl.php.net/vld-0.12.0
$ php -dvld.active=1 -dvld.execute=0 test.php
Extension vld
Copyright © 2013 Akira Koyasu. Some rights reserved.
PHP runtime
6
.php.php.php Parser
Compiler
Virtual Machine
Copyright © 2013 Akira Koyasu. Some rights reserved.
PHP runtime
6
.php.php.php Parser
Compiler
Virtual Machine
AST
構文解析
Copyright © 2013 Akira Koyasu. Some rights reserved.
PHP runtime
6
.php.php.php Parser
Compiler
Virtual Machineopcode
AST
構文解析
コンパイル
Copyright © 2013 Akira Koyasu. Some rights reserved.
PHP runtime
6
.php.php.php Parser
Compiler
Virtual Machineopcode
AST
構文解析
コンパイル
実行
Copyright © 2013 Akira Koyasu. Some rights reserved. 7
Ready?
Copyright © 2013 Akira Koyasu. Some rights reserved.
Loop
8
A B
Copyright © 2013 Akira Koyasu. Some rights reserved.
Loop
8
$c = sizeof($arr);
for ($i = 0; $i < $c; $i++) {
$t = $arr[$i];
}
foreach ($arr as $val) {
$t = $val;
}
A B
ただし、 とする$arr = range(0, 100);
Copyright © 2013 Akira Koyasu. Some rights reserved.
Loop
8
$c = sizeof($arr);
for ($i = 0; $i < $c; $i++) {
$t = $arr[$i];
}
foreach ($arr as $val) {
$t = $val;
}
A B
ただし、 とする$arr = range(0, 100);
Copyright © 2013 Akira Koyasu. Some rights reserved.
foreach ($arr as $val) {
$t = $val;
}
$c = sizeof($arr);
for ($i = 0; $i < $c; $i++) {
$t = $arr[$i];
}
FE_RESET
FE_FETCH
DO_FCALL 'sizeof'
IS_SMALLER
POST_INC
FETCH_DIM_R
Answer
9
A B
Copyright © 2013 Akira Koyasu. Some rights reserved.
foreach ($arr as $val) {
$t = $val;
}
$c = sizeof($arr);
for ($i = 0; $i < $c; $i++) {
$t = $arr[$i];
}
time: 0.683817 s
FE_RESET
FE_FETCH
time: 1.043019 s
DO_FCALL 'sizeof'
IS_SMALLER
POST_INC
FETCH_DIM_R
Answer
9
A B
Copyright © 2013 Akira Koyasu. Some rights reserved.
foreach ($arr as $val) {
$t = $val;
}
$c = sizeof($arr);
for ($i = 0; $i < $c; $i++) {
$t = $arr[$i];
}
time: 0.683817 s
FE_RESET
FE_FETCH
time: 1.043019 s
DO_FCALL 'sizeof'
IS_SMALLER
POST_INC
FETCH_DIM_R
Answer
9
A B
Copyright © 2013 Akira Koyasu. Some rights reserved.
foreach ($arr as $val) {
$t = $val;
}
$c = sizeof($arr);
for ($i = 0; $i < $c; $i++) {
$t = $arr[$i];
}
time: 0.683817 s
FE_RESET
FE_FETCHtime: 1.043019 s
DO_FCALL 'sizeof'
IS_SMALLER
POST_INC
FETCH_DIM_R
Answer
9
A B
Copyright © 2013 Akira Koyasu. Some rights reserved.
Elements
10
A B
Copyright © 2013 Akira Koyasu. Some rights reserved.
Elements
10
if (count($arr) > 0) {
;
}
if (!empty($arr)) {
;
}
$arr = array();ただし、 とする
A B
Copyright © 2013 Akira Koyasu. Some rights reserved.
Elements
10
if (count($arr) > 0) {
;
}
if (!empty($arr)) {
;
}
$arr = array();ただし、 とする
A B
Copyright © 2013 Akira Koyasu. Some rights reserved.
Answer
11
if (count($arr) > 0) {
;
}
if (!empty($arr)) {
;
}
A B
DO_FCALL 'count'
IS_SMALLER
ISSET_ISEMPTY_VAR
BOOL_NOT
Copyright © 2013 Akira Koyasu. Some rights reserved.
Answer
11
if (count($arr) > 0) {
;
}
if (!empty($arr)) {
;
}
A B
time: 0.026228 s time: 0.008356 s
DO_FCALL 'count'
IS_SMALLER
ISSET_ISEMPTY_VAR
BOOL_NOT
Copyright © 2013 Akira Koyasu. Some rights reserved.
Answer
11
if (count($arr) > 0) {
;
}
if (!empty($arr)) {
;
}
A B
time: 0.026228 s time: 0.008356 s
DO_FCALL 'count'
IS_SMALLER
ISSET_ISEMPTY_VAR
BOOL_NOT
Copyright © 2013 Akira Koyasu. Some rights reserved.
Answer
11
if (count($arr) > 0) {
;
}
if (!empty($arr)) {
;
}
A B
time: 0.026228 s time: 0.008356 s
DO_FCALL 'count'
IS_SMALLER
ISSET_ISEMPTY_VAR
BOOL_NOT
Copyright © 2013 Akira Koyasu. Some rights reserved. 12
Points
測ってみる 調べてみる
考えてみる
Copyright © 2013 Akira Koyasu. Some rights reserved. 13
Any Questions?
Copyright © 2013 Akira Koyasu. Some rights reserved.
Notes
This work is licensed under the Creative Commons Attribution-
NonCommercial 3.0 Unported License. To view a copy of this
license, visit http://creativecommons.org/licenses/by-nc/3.0/.
14
photo#1: http://www.flickr.com/photos/sbl/1617711/
Thank you very much, Feedback Welcome!
http://twitter.com/akirakoyasu
http://fb.me/akirakoyasu
http://www.akirakoyasu.net

More Related Content

Viewers also liked

20170311 JAWSDAYS Lunch Session「東急ハンズのiPad POS「HandsPOS」と AWSの付き合い方」
20170311 JAWSDAYS Lunch Session「東急ハンズのiPad POS「HandsPOS」と AWSの付き合い方」20170311 JAWSDAYS Lunch Session「東急ハンズのiPad POS「HandsPOS」と AWSの付き合い方」
20170311 JAWSDAYS Lunch Session「東急ハンズのiPad POS「HandsPOS」と AWSの付き合い方」Yusuke KUROIWA
 
[JAWS DAYS 2017 ワークショップ] 不安で夜眠れないAWSアカウント管理者に送る処方箋という名のハンズオン
[JAWS DAYS 2017 ワークショップ] 不安で夜眠れないAWSアカウント管理者に送る処方箋という名のハンズオン[JAWS DAYS 2017 ワークショップ] 不安で夜眠れないAWSアカウント管理者に送る処方箋という名のハンズオン
[JAWS DAYS 2017 ワークショップ] 不安で夜眠れないAWSアカウント管理者に送る処方箋という名のハンズオンKeisuke Kadoyama
 
サーバーレスでシステムを開発する時に⼤切な事
サーバーレスでシステムを開発する時に⼤切な事サーバーレスでシステムを開発する時に⼤切な事
サーバーレスでシステムを開発する時に⼤切な事Hiroyuki Hiki
 
AWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべことAWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべことKeisuke Nishitani
 
サーバーレスの今とこれから
サーバーレスの今とこれからサーバーレスの今とこれから
サーバーレスの今とこれから真吾 吉田
 
How to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your NicheHow to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your NicheLeslie Samuel
 
How to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & TricksHow to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & TricksSlideShare
 
Getting Started With SlideShare
Getting Started With SlideShareGetting Started With SlideShare
Getting Started With SlideShareSlideShare
 

Viewers also liked (8)

20170311 JAWSDAYS Lunch Session「東急ハンズのiPad POS「HandsPOS」と AWSの付き合い方」
20170311 JAWSDAYS Lunch Session「東急ハンズのiPad POS「HandsPOS」と AWSの付き合い方」20170311 JAWSDAYS Lunch Session「東急ハンズのiPad POS「HandsPOS」と AWSの付き合い方」
20170311 JAWSDAYS Lunch Session「東急ハンズのiPad POS「HandsPOS」と AWSの付き合い方」
 
[JAWS DAYS 2017 ワークショップ] 不安で夜眠れないAWSアカウント管理者に送る処方箋という名のハンズオン
[JAWS DAYS 2017 ワークショップ] 不安で夜眠れないAWSアカウント管理者に送る処方箋という名のハンズオン[JAWS DAYS 2017 ワークショップ] 不安で夜眠れないAWSアカウント管理者に送る処方箋という名のハンズオン
[JAWS DAYS 2017 ワークショップ] 不安で夜眠れないAWSアカウント管理者に送る処方箋という名のハンズオン
 
サーバーレスでシステムを開発する時に⼤切な事
サーバーレスでシステムを開発する時に⼤切な事サーバーレスでシステムを開発する時に⼤切な事
サーバーレスでシステムを開発する時に⼤切な事
 
AWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべことAWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべこと
 
サーバーレスの今とこれから
サーバーレスの今とこれからサーバーレスの今とこれから
サーバーレスの今とこれから
 
How to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your NicheHow to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your Niche
 
How to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & TricksHow to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & Tricks
 
Getting Started With SlideShare
Getting Started With SlideShareGetting Started With SlideShare
Getting Started With SlideShare
 

More from 輝 子安

Protractor under the hood
Protractor under the hoodProtractor under the hood
Protractor under the hood輝 子安
 
そろそろLambda(CI/CD編)
そろそろLambda(CI/CD編)そろそろLambda(CI/CD編)
そろそろLambda(CI/CD編)輝 子安
 
Dockerで構成するWebサービス 〜EmotionTechの場合〜
Dockerで構成するWebサービス 〜EmotionTechの場合〜Dockerで構成するWebサービス 〜EmotionTechの場合〜
Dockerで構成するWebサービス 〜EmotionTechの場合〜輝 子安
 
Scala for Java programmers
Scala for Java programmersScala for Java programmers
Scala for Java programmers輝 子安
 
Garbage Collection for Dummies
Garbage Collection for DummiesGarbage Collection for Dummies
Garbage Collection for Dummies輝 子安
 
JavaOne Guide for the Petite Bourgeoisie
JavaOne Guide for the Petite BourgeoisieJavaOne Guide for the Petite Bourgeoisie
JavaOne Guide for the Petite Bourgeoisie輝 子安
 
Java, Moving Forward
Java, Moving ForwardJava, Moving Forward
Java, Moving Forward輝 子安
 
Java, Up to Date
Java, Up to DateJava, Up to Date
Java, Up to Date輝 子安
 
Java, Up to Date Sources
Java, Up to Date SourcesJava, Up to Date Sources
Java, Up to Date Sources輝 子安
 
Hello, Guava ! samples
Hello, Guava ! samplesHello, Guava ! samples
Hello, Guava ! samples輝 子安
 
Hello, Guava !
Hello, Guava !Hello, Guava !
Hello, Guava !輝 子安
 
Tokyo Cabinet & Tokyo Tyrant
Tokyo Cabinet & Tokyo TyrantTokyo Cabinet & Tokyo Tyrant
Tokyo Cabinet & Tokyo Tyrant輝 子安
 

More from 輝 子安 (12)

Protractor under the hood
Protractor under the hoodProtractor under the hood
Protractor under the hood
 
そろそろLambda(CI/CD編)
そろそろLambda(CI/CD編)そろそろLambda(CI/CD編)
そろそろLambda(CI/CD編)
 
Dockerで構成するWebサービス 〜EmotionTechの場合〜
Dockerで構成するWebサービス 〜EmotionTechの場合〜Dockerで構成するWebサービス 〜EmotionTechの場合〜
Dockerで構成するWebサービス 〜EmotionTechの場合〜
 
Scala for Java programmers
Scala for Java programmersScala for Java programmers
Scala for Java programmers
 
Garbage Collection for Dummies
Garbage Collection for DummiesGarbage Collection for Dummies
Garbage Collection for Dummies
 
JavaOne Guide for the Petite Bourgeoisie
JavaOne Guide for the Petite BourgeoisieJavaOne Guide for the Petite Bourgeoisie
JavaOne Guide for the Petite Bourgeoisie
 
Java, Moving Forward
Java, Moving ForwardJava, Moving Forward
Java, Moving Forward
 
Java, Up to Date
Java, Up to DateJava, Up to Date
Java, Up to Date
 
Java, Up to Date Sources
Java, Up to Date SourcesJava, Up to Date Sources
Java, Up to Date Sources
 
Hello, Guava ! samples
Hello, Guava ! samplesHello, Guava ! samples
Hello, Guava ! samples
 
Hello, Guava !
Hello, Guava !Hello, Guava !
Hello, Guava !
 
Tokyo Cabinet & Tokyo Tyrant
Tokyo Cabinet & Tokyo TyrantTokyo Cabinet & Tokyo Tyrant
Tokyo Cabinet & Tokyo Tyrant
 

Recently uploaded

What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 

Recently uploaded (20)

What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 

PHP conference 2013 ja report

  • 2. Copyright © 2013 Akira Koyasu. Some rights reserved. Theory 2 定石、定跡(じょうせき)とは、アブストラクトゲームに おける用語である。お互いが最善と考えられる手を行った 場合の一連の手のこと。チェスでは、「セオリー」とも。 石を用いる囲碁、オセロ、連珠などでは「定石」が、駒を 用いる将棋、チェスなどでは「定跡」が用いられる。 - ja.wikipedia.org photo#1
  • 3. Copyright © 2013 Akira Koyasu. Some rights reserved. 3 Rule 2つのコードを見せます どちらが速く動くか考えてください 考える時間は10秒 相談しないで!
  • 4. Copyright © 2013 Akira Koyasu. Some rights reserved. Execution Time 4 $time1 = microtime(true); // test code loop (100000 times) $time2 = microtime(true); printf("time: %f sn", ($time2 - $time1));
  • 5. Copyright © 2013 Akira Koyasu. Some rights reserved. opcode 5 $ sudo pecl install channel://pecl.php.net/vld-0.12.0 $ php -dvld.active=1 -dvld.execute=0 test.php Extension vld
  • 6. Copyright © 2013 Akira Koyasu. Some rights reserved. PHP runtime 6 .php.php.php Parser Compiler Virtual Machine
  • 7. Copyright © 2013 Akira Koyasu. Some rights reserved. PHP runtime 6 .php.php.php Parser Compiler Virtual Machine AST 構文解析
  • 8. Copyright © 2013 Akira Koyasu. Some rights reserved. PHP runtime 6 .php.php.php Parser Compiler Virtual Machineopcode AST 構文解析 コンパイル
  • 9. Copyright © 2013 Akira Koyasu. Some rights reserved. PHP runtime 6 .php.php.php Parser Compiler Virtual Machineopcode AST 構文解析 コンパイル 実行
  • 10. Copyright © 2013 Akira Koyasu. Some rights reserved. 7 Ready?
  • 11. Copyright © 2013 Akira Koyasu. Some rights reserved. Loop 8 A B
  • 12. Copyright © 2013 Akira Koyasu. Some rights reserved. Loop 8 $c = sizeof($arr); for ($i = 0; $i < $c; $i++) { $t = $arr[$i]; } foreach ($arr as $val) { $t = $val; } A B ただし、 とする$arr = range(0, 100);
  • 13. Copyright © 2013 Akira Koyasu. Some rights reserved. Loop 8 $c = sizeof($arr); for ($i = 0; $i < $c; $i++) { $t = $arr[$i]; } foreach ($arr as $val) { $t = $val; } A B ただし、 とする$arr = range(0, 100);
  • 14. Copyright © 2013 Akira Koyasu. Some rights reserved. foreach ($arr as $val) { $t = $val; } $c = sizeof($arr); for ($i = 0; $i < $c; $i++) { $t = $arr[$i]; } FE_RESET FE_FETCH DO_FCALL 'sizeof' IS_SMALLER POST_INC FETCH_DIM_R Answer 9 A B
  • 15. Copyright © 2013 Akira Koyasu. Some rights reserved. foreach ($arr as $val) { $t = $val; } $c = sizeof($arr); for ($i = 0; $i < $c; $i++) { $t = $arr[$i]; } time: 0.683817 s FE_RESET FE_FETCH time: 1.043019 s DO_FCALL 'sizeof' IS_SMALLER POST_INC FETCH_DIM_R Answer 9 A B
  • 16. Copyright © 2013 Akira Koyasu. Some rights reserved. foreach ($arr as $val) { $t = $val; } $c = sizeof($arr); for ($i = 0; $i < $c; $i++) { $t = $arr[$i]; } time: 0.683817 s FE_RESET FE_FETCH time: 1.043019 s DO_FCALL 'sizeof' IS_SMALLER POST_INC FETCH_DIM_R Answer 9 A B
  • 17. Copyright © 2013 Akira Koyasu. Some rights reserved. foreach ($arr as $val) { $t = $val; } $c = sizeof($arr); for ($i = 0; $i < $c; $i++) { $t = $arr[$i]; } time: 0.683817 s FE_RESET FE_FETCHtime: 1.043019 s DO_FCALL 'sizeof' IS_SMALLER POST_INC FETCH_DIM_R Answer 9 A B
  • 18. Copyright © 2013 Akira Koyasu. Some rights reserved. Elements 10 A B
  • 19. Copyright © 2013 Akira Koyasu. Some rights reserved. Elements 10 if (count($arr) > 0) { ; } if (!empty($arr)) { ; } $arr = array();ただし、 とする A B
  • 20. Copyright © 2013 Akira Koyasu. Some rights reserved. Elements 10 if (count($arr) > 0) { ; } if (!empty($arr)) { ; } $arr = array();ただし、 とする A B
  • 21. Copyright © 2013 Akira Koyasu. Some rights reserved. Answer 11 if (count($arr) > 0) { ; } if (!empty($arr)) { ; } A B DO_FCALL 'count' IS_SMALLER ISSET_ISEMPTY_VAR BOOL_NOT
  • 22. Copyright © 2013 Akira Koyasu. Some rights reserved. Answer 11 if (count($arr) > 0) { ; } if (!empty($arr)) { ; } A B time: 0.026228 s time: 0.008356 s DO_FCALL 'count' IS_SMALLER ISSET_ISEMPTY_VAR BOOL_NOT
  • 23. Copyright © 2013 Akira Koyasu. Some rights reserved. Answer 11 if (count($arr) > 0) { ; } if (!empty($arr)) { ; } A B time: 0.026228 s time: 0.008356 s DO_FCALL 'count' IS_SMALLER ISSET_ISEMPTY_VAR BOOL_NOT
  • 24. Copyright © 2013 Akira Koyasu. Some rights reserved. Answer 11 if (count($arr) > 0) { ; } if (!empty($arr)) { ; } A B time: 0.026228 s time: 0.008356 s DO_FCALL 'count' IS_SMALLER ISSET_ISEMPTY_VAR BOOL_NOT
  • 25. Copyright © 2013 Akira Koyasu. Some rights reserved. 12 Points 測ってみる 調べてみる 考えてみる
  • 26. Copyright © 2013 Akira Koyasu. Some rights reserved. 13 Any Questions?
  • 27. Copyright © 2013 Akira Koyasu. Some rights reserved. Notes This work is licensed under the Creative Commons Attribution- NonCommercial 3.0 Unported License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc/3.0/. 14 photo#1: http://www.flickr.com/photos/sbl/1617711/ Thank you very much, Feedback Welcome! http://twitter.com/akirakoyasu http://fb.me/akirakoyasu http://www.akirakoyasu.net