SlideShare una empresa de Scribd logo
1 de 52
Descargar para leer sin conexión
MobaSiF::Template
 DeNA - Tadashi Matsuda - bobpp
    bobpp+yapc@bobpp.jp

  YAPC::Asia 2009 - 2009.09.10
•
• MobaSiF::Template   /

•
•
•
•            (                )

• bobpp (           )

• http://bobpp.jp/
•( )
  •           (http://mbok.jp)
YAPC!

• YAPC
•

•
Check this!

•Twitter: BoBpp
 •
MobaSiF
Moba* Simple
 Framework
Moba*
•
    • 2003
•
    •5   PV/day

• and more...
Moba* Simple
 Framework
Mobile Simple
 Framework
YAPC::Asia 2008
MobaSiF::Template
MTemplate

• MobaSiF::Template
• MobaSiF
•
MobaSiF::Template
•          (MobaSiF::*)

• github
• CPAN
•
  •
•
    • MobaSiF::Template
•
    • MobaSiF::Template::Compiler
•
HTML
Template

(*.html)
HTML
                  Template

                  (*.html)




MobaSiF::Template::PreCompiler   MobaSiF:::Template::Compiler
          precompile                        compile




      Include
     Template

   (*.txt/html)
HTML                                 Compiled
                  Template                              Template

                  (*.html)                                 (*.bin)




MobaSiF::Template::PreCompiler   MobaSiF:::Template::Compiler
          precompile                        compile




      Include
     Template

   (*.txt/html)
HTML                                 Compiled
                  Template                              Template

                  (*.html)                                 (*.bin)




MobaSiF::Template::PreCompiler   MobaSiF:::Template::Compiler        MobaSiF::Template
          precompile                        compile                   insert / render




      Include
                                                                         Output
     Template
                                                                         (*.html)
   (*.txt/html)
HTML
                     HTML                               Compiled
                      HTML
                       HTML
                  Template
                   Template                             Template
                    Template
                     Template
                   (*.html)
                    (*.html)                               (*.bin)
                     (*.html)
                      (*.html)



MobaSiF::Template::PreCompiler   MobaSiF:::Template::Compiler        MobaSiF::Template
          precompile                        compile                   insert / render




      Include
                                                                         Output
     Template
                                       Compile Command                   (*.html)
   (*.txt/html)
•       •
    •       •
    •       • URL Encode
•
$ cpan
cpan> install MobaSiF::Template
<                            :   >

<!-- Escape            -->
$=h:escape_string$

<!-- Escape              (bypass) -->
$=b:not_escape_data$

<!-- URL Encode              -->
$=e:url_encode_string$
<            :   >
$ if (val > 10) { $
     val 10
$ } elsif (val > 5) { $
     val 5
$ } else { $
     val 5
$}$
<                     :     >


$ loop (list) { $
     $=h:id$ / $=h:key$ / $=h:value$
$}$
<                        >
use MobaSiF::Template::Compiler;
MobaSiF::Template::Compiler::compile(
     “/path/to/template_file.html”,
     “/path/to/compiled_binary_file.bin”
);
<         >
use MobaSiF::Template;
my $param = +{ hoge => 1, fuga => [
   +{ id => 1, value => ‘A’ },
   +{ id => 2, value => ‘B’ },
] };
print MobaSiF::Template::insert(
            “/path/to/compiled_binary_file.bin”, $param);
use MobaSiF::Template;
my $param = +{...};
$MobaSiF::Template::DEVELOP = 1;
print MobaSiF::Template::render(
           “/path/to/template_file.html”,
            “/path/to/compiled_binary_file.bin”, $param);
use MobaSiF::Template;                         0
my $param = +{...};
$MobaSiF::Template::DEVELOP = 1;
print MobaSiF::Template::render(
           “/path/to/template_file.html”,
            “/path/to/compiled_binary_file.bin”, $param);
use MobaSiF::Template;
            1       down                       0
my $param = +{...};
$MobaSiF::Template::DEVELOP = 1;
print MobaSiF::Template::render(
           “/path/to/template_file.html”,
            “/path/to/compiled_binary_file.bin”, $param);
Benchmark! <Rivals>

• Template Toolkit
• Tenjin
• HTML::Template::Pro
• MobaSiF::Template
Benchmark

•     /



• 10,000        qps
Machine

• MacBook
• OS X 10.5 Leopard
• perl v.5.8.9
• 2.4GHz Core2 Duo
• 4GB Memory
Result.
          Benchmark#1
Result.
                                                             Benchmark#1
                       0          5000.00       10000.00   15000.00        20000.00

  Template Toolkit    585.8


             Tenjin           2421.3


HTML::Template::Pro
                                       6451.6

  MobaSiF::Template

                                                                      17543.9
binary template / XS
binary template

•               (option)...

•
    •     XS
XS

• mmap
•
NULL
PLAIN


  REPLACE


 IF/ELSE


LOOP / etc.



     NULL
•
•   View(Template)
                     =
• Pre-Compiler
• Mobile Pre-Compiler
• compile files command
• tests!
•
•
•
CPAN / github

• http://search.cpan.org/~bobpp/MobaSiF-
  Template/
• http://github.com/bobpp/perl-MobaSiF-
  Template/
MobaSiF::Template Introduction

Más contenido relacionado

Similar a MobaSiF::Template Introduction

SECCOM 2017 - Conan.io o gerente de pacote para C e C++
SECCOM 2017 - Conan.io o gerente de pacote para C e C++SECCOM 2017 - Conan.io o gerente de pacote para C e C++
SECCOM 2017 - Conan.io o gerente de pacote para C e C++Uilian Ries
 
Hands-on with the Symfony2 Framework
Hands-on with the Symfony2 FrameworkHands-on with the Symfony2 Framework
Hands-on with the Symfony2 FrameworkRyan Weaver
 
All about Erubis (English)
All about Erubis (English)All about Erubis (English)
All about Erubis (English)kwatch
 
Build Systems with autoconf, automake and libtool [updated]
Build Systems with autoconf, automake and libtool [updated]Build Systems with autoconf, automake and libtool [updated]
Build Systems with autoconf, automake and libtool [updated]Benny Siegert
 
New Features Coming in Browsers (RIT '09)
New Features Coming in Browsers (RIT '09)New Features Coming in Browsers (RIT '09)
New Features Coming in Browsers (RIT '09)jeresig
 
Living With Legacy Code
Living With Legacy CodeLiving With Legacy Code
Living With Legacy CodeRowan Merewood
 
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)Fabien Potencier
 
Symfony2 Introduction Presentation
Symfony2 Introduction PresentationSymfony2 Introduction Presentation
Symfony2 Introduction PresentationNerd Tzanetopoulos
 
The why and how of moving to php 5.4
The why and how of moving to php 5.4The why and how of moving to php 5.4
The why and how of moving to php 5.4Wim Godden
 
Profiling PHP with Xdebug / Webgrind
Profiling PHP with Xdebug / WebgrindProfiling PHP with Xdebug / Webgrind
Profiling PHP with Xdebug / WebgrindSam Keen
 
Bfg Ploneconf Oct2008
Bfg Ploneconf Oct2008Bfg Ploneconf Oct2008
Bfg Ploneconf Oct2008Jeffrey Clark
 
Node.js basics
Node.js basicsNode.js basics
Node.js basicsBen Lin
 
Introduction to Xamarin.Forms
Introduction to Xamarin.FormsIntroduction to Xamarin.Forms
Introduction to Xamarin.FormsBrad Pillow
 
From CakePHP to Laravel
From CakePHP to LaravelFrom CakePHP to Laravel
From CakePHP to LaravelJason McCreary
 
Tuning web performance
Tuning web performanceTuning web performance
Tuning web performanceGeorge Ang
 

Similar a MobaSiF::Template Introduction (20)

SECCOM 2017 - Conan.io o gerente de pacote para C e C++
SECCOM 2017 - Conan.io o gerente de pacote para C e C++SECCOM 2017 - Conan.io o gerente de pacote para C e C++
SECCOM 2017 - Conan.io o gerente de pacote para C e C++
 
Hands-on with the Symfony2 Framework
Hands-on with the Symfony2 FrameworkHands-on with the Symfony2 Framework
Hands-on with the Symfony2 Framework
 
All about Erubis (English)
All about Erubis (English)All about Erubis (English)
All about Erubis (English)
 
Build Systems with autoconf, automake and libtool [updated]
Build Systems with autoconf, automake and libtool [updated]Build Systems with autoconf, automake and libtool [updated]
Build Systems with autoconf, automake and libtool [updated]
 
New Features Coming in Browsers (RIT '09)
New Features Coming in Browsers (RIT '09)New Features Coming in Browsers (RIT '09)
New Features Coming in Browsers (RIT '09)
 
php 1
php 1php 1
php 1
 
Living With Legacy Code
Living With Legacy CodeLiving With Legacy Code
Living With Legacy Code
 
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
 
HPC_MPI_CICID_OA.pptx
HPC_MPI_CICID_OA.pptxHPC_MPI_CICID_OA.pptx
HPC_MPI_CICID_OA.pptx
 
Symfony2 Introduction Presentation
Symfony2 Introduction PresentationSymfony2 Introduction Presentation
Symfony2 Introduction Presentation
 
The why and how of moving to php 5.4
The why and how of moving to php 5.4The why and how of moving to php 5.4
The why and how of moving to php 5.4
 
Merb
MerbMerb
Merb
 
Profiling PHP with Xdebug / Webgrind
Profiling PHP with Xdebug / WebgrindProfiling PHP with Xdebug / Webgrind
Profiling PHP with Xdebug / Webgrind
 
PHP
PHPPHP
PHP
 
Bfg Ploneconf Oct2008
Bfg Ploneconf Oct2008Bfg Ploneconf Oct2008
Bfg Ploneconf Oct2008
 
Node.js basics
Node.js basicsNode.js basics
Node.js basics
 
The Skinny on Slim
The Skinny on SlimThe Skinny on Slim
The Skinny on Slim
 
Introduction to Xamarin.Forms
Introduction to Xamarin.FormsIntroduction to Xamarin.Forms
Introduction to Xamarin.Forms
 
From CakePHP to Laravel
From CakePHP to LaravelFrom CakePHP to Laravel
From CakePHP to Laravel
 
Tuning web performance
Tuning web performanceTuning web performance
Tuning web performance
 

Último

EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Angeliki Cooney
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfOrbitshub
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxRemote DBA Services
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Zilliz
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityWSO2
 

Último (20)

EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 

MobaSiF::Template Introduction

  • 1. MobaSiF::Template DeNA - Tadashi Matsuda - bobpp bobpp+yapc@bobpp.jp YAPC::Asia 2009 - 2009.09.10
  • 3. ( ) • bobpp ( ) • http://bobpp.jp/ •( ) • (http://mbok.jp)
  • 8. Moba* • • 2003 • •5 PV/day • and more...
  • 11.
  • 15. MobaSiF::Template • (MobaSiF::*) • github • CPAN • •
  • 16. • MobaSiF::Template • • MobaSiF::Template::Compiler •
  • 17.
  • 19. HTML Template (*.html) MobaSiF::Template::PreCompiler MobaSiF:::Template::Compiler precompile compile Include Template (*.txt/html)
  • 20. HTML Compiled Template Template (*.html) (*.bin) MobaSiF::Template::PreCompiler MobaSiF:::Template::Compiler precompile compile Include Template (*.txt/html)
  • 21. HTML Compiled Template Template (*.html) (*.bin) MobaSiF::Template::PreCompiler MobaSiF:::Template::Compiler MobaSiF::Template precompile compile insert / render Include Output Template (*.html) (*.txt/html)
  • 22. HTML HTML Compiled HTML HTML Template Template Template Template Template (*.html) (*.html) (*.bin) (*.html) (*.html) MobaSiF::Template::PreCompiler MobaSiF:::Template::Compiler MobaSiF::Template precompile compile insert / render Include Output Template Compile Command (*.html) (*.txt/html)
  • 23. • • • • • URL Encode •
  • 24. $ cpan cpan> install MobaSiF::Template
  • 25. < : > <!-- Escape --> $=h:escape_string$ <!-- Escape (bypass) --> $=b:not_escape_data$ <!-- URL Encode --> $=e:url_encode_string$
  • 26. < : > $ if (val > 10) { $ val 10 $ } elsif (val > 5) { $ val 5 $ } else { $ val 5 $}$
  • 27. < : > $ loop (list) { $ $=h:id$ / $=h:key$ / $=h:value$ $}$
  • 28. < > use MobaSiF::Template::Compiler; MobaSiF::Template::Compiler::compile( “/path/to/template_file.html”, “/path/to/compiled_binary_file.bin” );
  • 29. < > use MobaSiF::Template; my $param = +{ hoge => 1, fuga => [ +{ id => 1, value => ‘A’ }, +{ id => 2, value => ‘B’ }, ] }; print MobaSiF::Template::insert( “/path/to/compiled_binary_file.bin”, $param);
  • 30. use MobaSiF::Template; my $param = +{...}; $MobaSiF::Template::DEVELOP = 1; print MobaSiF::Template::render( “/path/to/template_file.html”, “/path/to/compiled_binary_file.bin”, $param);
  • 31. use MobaSiF::Template; 0 my $param = +{...}; $MobaSiF::Template::DEVELOP = 1; print MobaSiF::Template::render( “/path/to/template_file.html”, “/path/to/compiled_binary_file.bin”, $param);
  • 32. use MobaSiF::Template; 1 down 0 my $param = +{...}; $MobaSiF::Template::DEVELOP = 1; print MobaSiF::Template::render( “/path/to/template_file.html”, “/path/to/compiled_binary_file.bin”, $param);
  • 33.
  • 34.
  • 35. Benchmark! <Rivals> • Template Toolkit • Tenjin • HTML::Template::Pro • MobaSiF::Template
  • 36. Benchmark • / • 10,000 qps
  • 37. Machine • MacBook • OS X 10.5 Leopard • perl v.5.8.9 • 2.4GHz Core2 Duo • 4GB Memory
  • 38. Result. Benchmark#1
  • 39. Result. Benchmark#1 0 5000.00 10000.00 15000.00 20000.00 Template Toolkit 585.8 Tenjin 2421.3 HTML::Template::Pro 6451.6 MobaSiF::Template 17543.9
  • 40.
  • 42. binary template • (option)... • • XS
  • 44.
  • 45. NULL
  • 46. PLAIN REPLACE IF/ELSE LOOP / etc. NULL
  • 47. • • View(Template) =
  • 48. • Pre-Compiler • Mobile Pre-Compiler • compile files command • tests! •
  • 49.
  • 51. CPAN / github • http://search.cpan.org/~bobpp/MobaSiF- Template/ • http://github.com/bobpp/perl-MobaSiF- Template/