Sn - PowerPoint PPT Presentation

About This Presentation
Title:

Sn

Description:

inclusions, local variables optimization, multi-version types/functions ... emulates the PHP interpreter environment (Zend API) ... – PowerPoint PPT presentation

Number of Views:24
Avg rating:3.0/5.0
Slides: 13
Provided by: janb65
Category:
Tags: emulates

less

Transcript and Presenter's Notes

Title: Sn


1
(No Transcript)
2
Outline
  • Introduction to the Phalanger System
  • main features and goals
  • Why PHP on .NET Framework?
  • Performance benchmarks
  • Interesting Issues
  • inclusions, local variables optimization,
    multi-version types/functions
  • accessing .NET objects, adding fields on .NET
    objects at run-time
  • using PHP native libraries
  • Future Work Phalanger 2.0
  • PHP/CLR extending PHP to the first-class .NET
    language
  • Support for Mono Platform

3
Phalanger
  • Extends the family of .NET languages with PHP
    versions 4, 5, and 6
  • introduces language extensions for using .NET
    types (PHP/CLR)
  • Makes it possible to run existing PHP
    applications on ASP.NET web server
  • Significant performance improvement
  • Higher reliability of the web server
  • Better configurability
  • More errors revealed by the compilation
  • Source-free application deployment
  • Brings virtually all PHP libraries to .NET
    Framework
  • migration from PHP interpreter is simple in
    practice without additional costs
  • Enriches both worlds
  • PHP applications with the functionality of the
    .NET platform
  • .NET applications with a possibility to use a
    popular dynamic language
  • Integrates PHP with Visual Studio .NET

4
PHP Sample
  • include "a.php"
  • class C extends D implements I, J
  • public function m(a, b 1, c
    array(3,2,1))
  • f "sort"
  • f(c)
  • x "b"
  • if (x) function f() echo "version 1"
  • else function f() echo "version 2"
  • f()
  • eval('a')
  • private d

5
Micro-benchmarks
  • each operation performed 10M times in a loop
    machine Pentium M Dothan 1.8GHz/2MB cache
  • the lesser the better

6
phpBB Benchmark Results (Apache 2.0.54)
MSDE 2000 SP3
MySQL 4.1.11
requests per second
the greater the better
7
Major Issues
  • missing specification
  • correctness criteria existing applications
    should work well without modifications
  • inclusions
  • standard PHP mode
  • inclusions similar to C language the included
    file neednt to be known at compile-time
  • pure mode (since Phalanger 2.0)
  • C like project unconditional declarations
    visible in all files comprising the project
  • multi-version and compile-time unknown
    types/functions
  • classes and functions can be declared
    conditionally in multiple versions
  • classes and functions can be generated at
    run-time
  • class can extend/implement compile-time unknown
    class/interface
  • local variables optimization
  • creating a hash table for each call is expensive
    and unnecessary
  • compile-time known variables can be stored in CLR
    locals in majority cases

8
Using PHP Native Extensions
  • a necessity for a seamless migration from PHP
    interpreter
  • PHP
  • Many functions and classes implemented in PHP
    extensions
  • php_imap.dll, php_pdf.dll, php_sockets.dll,
    php_gtk.dll,
  • PHP interpreter exposes so called Zend API to
    extensions (php4ts.dll)
  • Phalanger
  • Makes the functionality in PHP extensions
    available for any .NET app.
  • managed wrappers
  • encapsulates and shields out native
    implementation
  • Extension Manager
  • emulates the PHP interpreter environment (Zend
    API)
  • within the application process using the
    extension or
  • in a separate process, isolating untrustworthy
    extensions

Native Code
php_imap.dll
Mixed Code
Managed Code
Application (PHP, C, )
Extension Wrapper
C/CLIphp4ts.dll
Extension Manager
php_pdf.dll

Zend API
optional process boundary bridged by .NET
Remoting via Shared Memory Channel
9
Managed Wrappers
  • Assemblies generated automatically from native
    extensions and optional type information in XML
    format

10
Summary Future Work
  • Phalanger 1.0
  • goal achieved to make existing application
    working under .NET
  • much better performance in practice
  • final version available for download
  • Phalanger 2.0, PHP/CLR
  • Make PHP a first-class language for .NET
  • extensions to the language enabling PHP programs
    to work directly with .NET types, methods,
    delegates, events, generics,
  • extending .NET classes, overload resolution,
    run-time fields addition,
  • multi-threading
  • support for Language Integrated Query (LINQ)
  • minimize necessary language modifications
  • keep the dynamic nature of the language
  • e.g. run-time specified generic type arguments,
    etc.
  • ASP.NET Controls in PHP etc.

11
Related Work
  • Dynamic languages on .NET
  • IronPython
  • Python is a bit more dynamic
  • e.g. replacing methods at run-time
  • less optimizations possible
  • PyStone benchmark
  • overall improvement by factor 1.84
  • micro-benchmark results range from 10x faster to
    10x slower
  • Ruby, Perl, JScript,
  • PHP compilers
  • Resin Quercus
  • PHP to Java translation, compilation to JVM
    byte-code
  • Roadsend Compiler
  • PHP to C translation, compilation to native code

12
  • Q A
Write a Comment
User Comments (0)
About PowerShow.com