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

Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
panagenda
 

Recently uploaded (20)

Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
 
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptxWSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
 
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
 
AI mind or machine power point presentation
AI mind or machine power point presentationAI mind or machine power point presentation
AI mind or machine power point presentation
 
IESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIESVE for Early Stage Design and Planning
IESVE for Early Stage Design and Planning
 
The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?
 
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
 
State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!
 
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
 
Microsoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - QuestionnaireMicrosoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - Questionnaire
 
Syngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdfSyngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdf
 
Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024
 
1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT
1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT
1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT
 
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
 
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераIntro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджера
 
Using IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & IrelandUsing IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & Ireland
 
Working together SRE & Platform Engineering
Working together SRE & Platform EngineeringWorking together SRE & Platform Engineering
Working together SRE & Platform Engineering
 
Long journey of Ruby Standard library at RubyKaigi 2024
Long journey of Ruby Standard library at RubyKaigi 2024Long journey of Ruby Standard library at RubyKaigi 2024
Long journey of Ruby Standard library at RubyKaigi 2024
 
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdfSimplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
 
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdfHow Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
 

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

  • 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