SlideShare a Scribd company logo
1 of 16
LL Planet 2011 LT
HTML

    5   × 20   × 10




3

Mac OS X 10.6, Core2 Duo 2GHz
http://bit.ly/pNNmGY
LuaJIT (2.0.0-b8)
            PHP (5.3.6)
            Perl (5.12.1)
            Lua (5.1.4)
            Python (3.2.1)
            Rubinius (1.2.4)
            Go (6g r57.2)
            Ruby (1.9.2-p290)
0   40000        80000
g++ (4.2.6)
                    Java (1.6.0_26)
                    PyPy (1.6.0)
            LuaJIT (2.0.0-b8)
            PHP (5.3.6)
            Perl (5.12.1)
            Lua (5.1.4)
            Python (3.2.1)
            Rubinius (1.2.4)
            Go (6g r57.2)
            Ruby (1.9.2-p290)
0   40000   80000     120000     160000
g++ (4.2.6)
                 Java (1.6.0_26)
                 PyPy (1.6.0)
             LuaJIT (2.0.0-b8)
             PHP (5.3.6)
             Perl (5.12.1)
             Lua (5.1.4)
             Python (3.2.1)
             Rubinius (1.2.4)
             Go (6g r57.2)
             Ruby (1.9.2-p290)
0   40000 80000 120000 160000 200000 240000 280000 320000
g++ (4.2.6)
  Java (1.6.0_26)
  PyPy (1.6.0)
LuaJIT (2.0.0-b8)
PHP (5.3.6)
Perl (5.12.1)
Lua (5.1.4)
Python (3.2.1)
Rubinius (1.2.4)
Go (6g r57.2)
Ruby (1.9.2-p290)
Node.js (0.5.4)
    g++ (4.2.6)
    Java (1.6.0_26)
    PyPy (1.6.0)
    LuaJIT (2.0.0-b8)
    PHP (5.3.6)
    Perl (5.12.1)
    Lua (5.1.4)
    Python (3.2.1)
    Rubinius (1.2.4)
    Go (6g r57.2)
    Ruby (1.9.2-p290)
0      500000   1000000   1500000    2000000
1
                           	 	 	 
       	 	 	 	 	 	 	 	 	 	 	 	 	 

	    	 	 	 	 	 	 	 	 	 	 	 	 	 	 
                           	 	 	    2
                           	 	 	 
       	 	 	 	 	 	 	 	 	 	 	 	 	    (Tracing JIT)


	    	 	 	 	 	 	 	 	 	 	 	 	 	 	 
                           	 	 	 
                           	 	 	 
                                        Node.js 0.5.1
Node.js (0.5.4)
                       g++ (4.2.6)
                 Java (1.6.0_26)
                 PyPy (1.5.0-a0)
            LuaJIT (2.0.0-b8)
            PHP (5.3.6)
            Perl (5.12.1)
            Lua (5.1.4)
            Python (3.2.1)
            Rubinius (1.2.4)
            Go (6g r57.2)
            Ruby (1.9.2-p290)
0   50000     100000   150000   200000      250000
Tenjin (node.js)

   Tenjin (perl)

   Tenjin (php)

  Tenjin (ruby)

Tenjin (python)
                   0   10000   20000   30000   40000
Node.js (0.5.4)
                       g++ (4.2.6)
                 Java (1.6.0_26)
                 PyPy (1.5.0-a0)
            LuaJIT (2.0.0-b8)
            PHP (5.3.6)
            Perl (5.12.1)
            Lua (5.1.4)
            Python (3.2.1)
            Rubinius (1.2.4)
            Go (6g r57.2)
            Ruby (1.9.2-p290)
0   50000     100000   150000   200000      250000
Node.js (0.5.4)
                       g++ (4.2.6)
                 Java (1.6.0_26)
                 PyPy (1.5.0-a0)
            LuaJIT (2.0.0-b8)
            PHP (5.3.6)
            Perl (5.12.1)
            Lua (5.1.4)
            Python (3.2.1)
            Rubinius (1.2.4)
            Go (6g r57.2)
            Ruby (1.9.2-p290)
0   50000     100000   150000   200000      250000
g++: std::string



    Java: StringBuilder + toString()



    Java: StringBuilder w/o toString()




0       50000   100000   150000   200000   250000
list.append()                           Python (3.2.1)
         append()
     list.extend()
          extend()
  extend()+str()
     buf[-1:] = ()
StringIO.write()
                     0   20000   40000   60000   80000   100000

    list.append()                           PyPy (1.6.0)
         append()
     list.extend()
          extend()
  extend()+str()
     buf[-1:] = ()
StringIO.write()
                     0   20000   40000   60000   80000   100000
V8 (+ crankshaft)




StringBuilder#toString()

JIT
文字列結合のベンチマークをいろんな処理系でやってみた

More Related Content

More from kwatch

I have something to say about the buzz word "From Java to Ruby"
I have something to say about the buzz word "From Java to Ruby"I have something to say about the buzz word "From Java to Ruby"
I have something to say about the buzz word "From Java to Ruby"
kwatch
 

More from kwatch (20)

How to make the fastest Router in Python
How to make the fastest Router in PythonHow to make the fastest Router in Python
How to make the fastest Router in Python
 
Migr8.rb チュートリアル
Migr8.rb チュートリアルMigr8.rb チュートリアル
Migr8.rb チュートリアル
 
なんでもID
なんでもIDなんでもID
なんでもID
 
Nippondanji氏に怒られても仕方ない、配列型とJSON型の使い方
Nippondanji氏に怒られても仕方ない、配列型とJSON型の使い方Nippondanji氏に怒られても仕方ない、配列型とJSON型の使い方
Nippondanji氏に怒られても仕方ない、配列型とJSON型の使い方
 
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
 
O/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐO/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐ
 
正規表現リテラルは本当に必要なのか?
正規表現リテラルは本当に必要なのか?正規表現リテラルは本当に必要なのか?
正規表現リテラルは本当に必要なのか?
 
【公開終了】Python4PHPer - PHPユーザのためのPython入門 (Python2.5)
【公開終了】Python4PHPer - PHPユーザのためのPython入門 (Python2.5)【公開終了】Python4PHPer - PHPユーザのためのPython入門 (Python2.5)
【公開終了】Python4PHPer - PHPユーザのためのPython入門 (Python2.5)
 
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!
 
PHPとJavaScriptにおけるオブジェクト指向を比較する
PHPとJavaScriptにおけるオブジェクト指向を比較するPHPとJavaScriptにおけるオブジェクト指向を比較する
PHPとJavaScriptにおけるオブジェクト指向を比較する
 
SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?
SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?
SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?
 
Fantastic DSL in Python
Fantastic DSL in PythonFantastic DSL in Python
Fantastic DSL in Python
 
What is wrong on Test::More? / Test::Moreが抱える問題点とその解決策
What is wrong on Test::More? / Test::Moreが抱える問題点とその解決策What is wrong on Test::More? / Test::Moreが抱える問題点とその解決策
What is wrong on Test::More? / Test::Moreが抱える問題点とその解決策
 
PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門
 
Pretty Good Branch Strategy for Git/Mercurial
Pretty Good Branch Strategy for Git/MercurialPretty Good Branch Strategy for Git/Mercurial
Pretty Good Branch Strategy for Git/Mercurial
 
Oktest - a new style testing library for Python -
Oktest - a new style testing library for Python -Oktest - a new style testing library for Python -
Oktest - a new style testing library for Python -
 
I have something to say about the buzz word "From Java to Ruby"
I have something to say about the buzz word "From Java to Ruby"I have something to say about the buzz word "From Java to Ruby"
I have something to say about the buzz word "From Java to Ruby"
 
Cより速いRubyプログラム
Cより速いRubyプログラムCより速いRubyプログラム
Cより速いRubyプログラム
 
Javaより速いLL用テンプレートエンジン
Javaより速いLL用テンプレートエンジンJavaより速いLL用テンプレートエンジン
Javaより速いLL用テンプレートエンジン
 
Underlaying Technology of Modern O/R Mapper
Underlaying Technology of Modern O/R MapperUnderlaying Technology of Modern O/R Mapper
Underlaying Technology of Modern O/R Mapper
 

Recently uploaded

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
Safe Software
 
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
panagenda
 

Recently uploaded (20)

Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
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
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
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...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
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
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
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
 
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
 

文字列結合のベンチマークをいろんな処理系でやってみた

  • 2. HTML 5 × 20 × 10 3 Mac OS X 10.6, Core2 Duo 2GHz http://bit.ly/pNNmGY
  • 3. LuaJIT (2.0.0-b8) PHP (5.3.6) Perl (5.12.1) Lua (5.1.4) Python (3.2.1) Rubinius (1.2.4) Go (6g r57.2) Ruby (1.9.2-p290) 0 40000 80000
  • 4. g++ (4.2.6) Java (1.6.0_26) PyPy (1.6.0) LuaJIT (2.0.0-b8) PHP (5.3.6) Perl (5.12.1) Lua (5.1.4) Python (3.2.1) Rubinius (1.2.4) Go (6g r57.2) Ruby (1.9.2-p290) 0 40000 80000 120000 160000
  • 5. g++ (4.2.6) Java (1.6.0_26) PyPy (1.6.0) LuaJIT (2.0.0-b8) PHP (5.3.6) Perl (5.12.1) Lua (5.1.4) Python (3.2.1) Rubinius (1.2.4) Go (6g r57.2) Ruby (1.9.2-p290) 0 40000 80000 120000 160000 200000 240000 280000 320000
  • 6. g++ (4.2.6) Java (1.6.0_26) PyPy (1.6.0) LuaJIT (2.0.0-b8) PHP (5.3.6) Perl (5.12.1) Lua (5.1.4) Python (3.2.1) Rubinius (1.2.4) Go (6g r57.2) Ruby (1.9.2-p290)
  • 7. Node.js (0.5.4) g++ (4.2.6) Java (1.6.0_26) PyPy (1.6.0) LuaJIT (2.0.0-b8) PHP (5.3.6) Perl (5.12.1) Lua (5.1.4) Python (3.2.1) Rubinius (1.2.4) Go (6g r57.2) Ruby (1.9.2-p290) 0 500000 1000000 1500000 2000000
  • 8. 1 2 (Tracing JIT) Node.js 0.5.1
  • 9. Node.js (0.5.4) g++ (4.2.6) Java (1.6.0_26) PyPy (1.5.0-a0) LuaJIT (2.0.0-b8) PHP (5.3.6) Perl (5.12.1) Lua (5.1.4) Python (3.2.1) Rubinius (1.2.4) Go (6g r57.2) Ruby (1.9.2-p290) 0 50000 100000 150000 200000 250000
  • 10. Tenjin (node.js) Tenjin (perl) Tenjin (php) Tenjin (ruby) Tenjin (python) 0 10000 20000 30000 40000
  • 11. Node.js (0.5.4) g++ (4.2.6) Java (1.6.0_26) PyPy (1.5.0-a0) LuaJIT (2.0.0-b8) PHP (5.3.6) Perl (5.12.1) Lua (5.1.4) Python (3.2.1) Rubinius (1.2.4) Go (6g r57.2) Ruby (1.9.2-p290) 0 50000 100000 150000 200000 250000
  • 12. Node.js (0.5.4) g++ (4.2.6) Java (1.6.0_26) PyPy (1.5.0-a0) LuaJIT (2.0.0-b8) PHP (5.3.6) Perl (5.12.1) Lua (5.1.4) Python (3.2.1) Rubinius (1.2.4) Go (6g r57.2) Ruby (1.9.2-p290) 0 50000 100000 150000 200000 250000
  • 13. g++: std::string Java: StringBuilder + toString() Java: StringBuilder w/o toString() 0 50000 100000 150000 200000 250000
  • 14. list.append() Python (3.2.1) append() list.extend() extend() extend()+str() buf[-1:] = () StringIO.write() 0 20000 40000 60000 80000 100000 list.append() PyPy (1.6.0) append() list.extend() extend() extend()+str() buf[-1:] = () StringIO.write() 0 20000 40000 60000 80000 100000