SlideShare a Scribd company logo
JS compilation
    hot or not?




                  Zbigniew Braniecki (gandalf@mozilla.com)
let’s talk about benchmarks
5 categories of benchmarks
5 categories of benchmarks
•   Real applications
5 categories of benchmarks
•   Real applications
•   Modified applications
    (eg. with I/O removed to make it CPU-bound)
5 categories of benchmarks
•   Real applications
•   Modified applications
    (eg. with I/O removed to make it CPU-bound)

•   Kernels
    (key fragments of real applications)
5 categories of benchmarks
•   Real applications
•   Modified applications
    (eg. with I/O removed to make it CPU-bound)

•   Kernels
    (key fragments of real applications)

•   Toy benchmarks
    (eg. sieve of Erastosthenes)
5 categories of benchmarks
•   Real applications
•   Modified applications
    (eg. with I/O removed to make it CPU-bound)

•   Kernels
    (key fragments of real applications)

•   Toy benchmarks
    (eg. sieve of Erastosthenes)

•   Synthetic benchmarks
    (code created artificially to fit a profile of particular operations, e.g Dhrystone)
statistics
statistics

•   How common is average?
statistics

•   How common is average?

•   Biases (sampling, memory etc.)
statistics

•   How common is average?

•   Biases (sampling, memory etc.)

•   Measuring the right thing is hard
statistics

•   How common is average?

•   Biases (sampling, memory etc.)

•   Measuring the right thing is hard

•   Reducing complexity
History


How did browser JS performance improve over time
V8
V8

5000


3750


2500


1250


   0
       1.0   1.5   2.0   3.0    3.5   3.6   4   Nightly-JS
V8

5000


3750


2500


1250


   0
       1.0   1.5   2.0   3.0    3.5   3.6   4   Nightly-JS
V8

5000


3750


2500


1250


   0
       1.0   1.5   2.0   3.0    3.5   3.6   4   Nightly-JS
V8

5000


3750


2500


1250


   0
       1.0   1.5   2.0   3.0    3.5   3.6   4   Nightly-JS
V8

5000


3750


2500


1250


   0
       1.0   1.5   2.0   3.0    3.5   3.6   4   Nightly-JS
V8

5000


3750


2500


1250


   0
       1.0   1.5   2.0   3.0    3.5   3.6   4   Nightly-JS
V8

5000


3750


2500


1250


   0
       1.0   1.5   2.0   3.0    3.5   3.6   4   Nightly-JS
V8

5000


3750


2500


1250


   0
       1.0   1.5   2.0   3.0    3.5   3.6   4   Nightly-JS
V8

5000


3750


2500


1250


   0
       1.0   1.5   2.0   3.0    3.5   3.6   4   Nightly-JS
SunSpider
SunSpider

20000


15000


10000


 5000


    0
        1.0   1.5   2.0   3.0   3.5   3.6   4   Nightly-JS
SunSpider

20000


15000


10000


 5000


    0
        1.0   1.5   2.0   3.0   3.5   3.6   4   Nightly-JS
SunSpider

20000


15000


10000


 5000


    0
        1.0   1.5   2.0   3.0   3.5   3.6   4   Nightly-JS
SunSpider

20000


15000


10000


 5000


    0
        1.0   1.5   2.0   3.0   3.5   3.6   4   Nightly-JS
SunSpider

20000


15000


10000


 5000


    0
        1.0   1.5   2.0   3.0   3.5   3.6   4   Nightly-JS
SunSpider

20000


15000


10000


 5000


    0
        1.0   1.5   2.0   3.0   3.5   3.6   4   Nightly-JS
SunSpider

20000


15000


10000


 5000


    0
        1.0   1.5   2.0   3.0   3.5   3.6   4   Nightly-JS
SunSpider

20000


15000


10000


 5000


    0
        1.0   1.5   2.0   3.0   3.5   3.6   4   Nightly-JS
SunSpider

20000


15000


10000


 5000


    0
        1.0   1.5   2.0   3.0   3.5   3.6   4   Nightly-JS
SunSpider
SunSpider

3000


2250


1500


 750


   0
       3.0   3.5      3.6   4.0   Nightly-JS
SunSpider

3000


2250


1500


 750


   0
       3.0   3.5      3.6   4.0   Nightly-JS
SunSpider

3000


2250


1500


 750


   0
       3.0   3.5      3.6   4.0   Nightly-JS
SunSpider

3000


2250


1500


 750


   0
       3.0   3.5      3.6   4.0   Nightly-JS
SunSpider

3000


2250


1500


 750


   0
       3.0   3.5      3.6   4.0   Nightly-JS
SunSpider

3000


2250


1500


 750


   0
       3.0   3.5      3.6   4.0   Nightly-JS
Kraken
Kraken

50000


37500


25000


12500


    0
        3.0   3.5     3.6   4.0   Nightly-JS
Kraken

50000


37500


25000


12500


    0
        3.0   3.5     3.6   4.0   Nightly-JS
Kraken

50000


37500


25000


12500


    0
        3.0   3.5     3.6   4.0   Nightly-JS
Kraken

50000


37500


25000


12500


    0
        3.0   3.5     3.6   4.0   Nightly-JS
Kraken

50000


37500


25000


12500


    0
        3.0   3.5     3.6   4.0   Nightly-JS
Kraken

50000


37500


25000


12500


    0
        3.0   3.5     3.6   4.0   Nightly-JS
Types of JIT


method    vs.       tracing
method JIT
                 heap

     10
      9
      8
      7
      6
      5
      4
      3
      2
      1
      0
             a          b
method JIT
                 heap

     10
      9
      8
      7
      6
      5
      4
      3
      2
      1
      0
             a          b
method JIT
                 heap

     10
      9
      8
      7
      6
      5
      4
      3
      2
      1
      0
             a          b
method JIT
                 heap

     10
      9
      8
      7
      6
      5
      4
      3
      2
      1
      0
             a          b
method JIT
                 heap

     10
      9
      8
      7
      6
      5
      4
      3
      2
      1
      0
             a          b
method JIT
                 heap

     10
      9
      8
      7
      6
      5
      4
      3
      2
      1
      0
             a          b
method JIT
                     heap
hot loop!
            10
             9
             8
             7
             6
             5
             4
             3
             2
             1
             0
                 a          b
tracing JIT
              heap
  a
      10
       9
       8
       7
       6
       5
       4
       3
       2
       1
       0
                a
tracing JIT
                  heap
  b
      10
       9
       8
       7
       6
       5
       4
       3
       2
       1
       0
              a          b
tracing JIT
                      heap
         b
             10
              9
              8
              7
              6
              5
              4
              3
              2
              1
              0
hot trace!        a          b
How browsers compile stuff

•   Chakra (IE) - method

•   Carakan (Opera) - method

•   Nitro (Safari) - method

•   V8 (Chrome) - method

•   JägerMonkey (Firefox) - trace + method
method vs. tracing
How to help JIT
  hot loop!                b




                  hot trace!
What to avoid

•   competing heaps

•   variable type changing

•   evals

•   looong methods
Future

•   Dead code elimination

•   Type Interface

•   Function inlining

•   CrankShaft (Chrome) and IonMonkey (Firefox)
Questions?
Thank You!

More Related Content

Similar to Js compilation falsy values slides

Sun jdk 1.6内存管理 -实现篇 -毕玄
Sun jdk 1.6内存管理 -实现篇 -毕玄Sun jdk 1.6内存管理 -实现篇 -毕玄
Sun jdk 1.6内存管理 -实现篇 -毕玄锐 张
 
Blind elephant black hat 2010 v2
Blind elephant   black hat 2010 v2Blind elephant   black hat 2010 v2
Blind elephant black hat 2010 v2
Jaime Restrepo
 
Casino Revenue Potential Study Model By Ramachandar Siva
Casino Revenue Potential Study Model By Ramachandar SivaCasino Revenue Potential Study Model By Ramachandar Siva
Casino Revenue Potential Study Model By Ramachandar Siva
Ramachandar Siva
 
Scope of six sigma in indian foundry operations
Scope of six sigma in indian foundry operationsScope of six sigma in indian foundry operations
Scope of six sigma in indian foundry operations
Dr. Bikram Jit Singh
 
CPU vulnerabilities - where are we now?
CPU vulnerabilities - where are we now?CPU vulnerabilities - where are we now?
CPU vulnerabilities - where are we now?
DefCamp
 
Awd3 m1 desi
Awd3 m1 desiAwd3 m1 desi
Awd3 m1 desiSenistr0
 
JKSimMet Course - Part 1
JKSimMet Course - Part 1JKSimMet Course - Part 1
JKSimMet Course - Part 1
James Didovich
 
working capital manegment
working capital manegmentworking capital manegment
working capital manegment
Gourav Priyadarshan
 
Physics Class 9th Chapter 1
Physics Class 9th Chapter 1Physics Class 9th Chapter 1
Physics Class 9th Chapter 1
MuhammadFaisal589
 
[2018 台灣人工智慧學校校友年會] 產業經驗分享: 如何用最少的訓練樣本,得到最好的深度學習影像分析結果,減少一半人力,提升一倍品質 / 李明達
[2018 台灣人工智慧學校校友年會] 產業經驗分享: 如何用最少的訓練樣本,得到最好的深度學習影像分析結果,減少一半人力,提升一倍品質 / 李明達[2018 台灣人工智慧學校校友年會] 產業經驗分享: 如何用最少的訓練樣本,得到最好的深度學習影像分析結果,減少一半人力,提升一倍品質 / 李明達
[2018 台灣人工智慧學校校友年會] 產業經驗分享: 如何用最少的訓練樣本,得到最好的深度學習影像分析結果,減少一半人力,提升一倍品質 / 李明達
台灣資料科學年會
 
MongoUK 2011 - Rplacing RabbitMQ with MongoDB
MongoUK 2011 - Rplacing RabbitMQ with MongoDBMongoUK 2011 - Rplacing RabbitMQ with MongoDB
MongoUK 2011 - Rplacing RabbitMQ with MongoDBBoxed Ice
 

Similar to Js compilation falsy values slides (11)

Sun jdk 1.6内存管理 -实现篇 -毕玄
Sun jdk 1.6内存管理 -实现篇 -毕玄Sun jdk 1.6内存管理 -实现篇 -毕玄
Sun jdk 1.6内存管理 -实现篇 -毕玄
 
Blind elephant black hat 2010 v2
Blind elephant   black hat 2010 v2Blind elephant   black hat 2010 v2
Blind elephant black hat 2010 v2
 
Casino Revenue Potential Study Model By Ramachandar Siva
Casino Revenue Potential Study Model By Ramachandar SivaCasino Revenue Potential Study Model By Ramachandar Siva
Casino Revenue Potential Study Model By Ramachandar Siva
 
Scope of six sigma in indian foundry operations
Scope of six sigma in indian foundry operationsScope of six sigma in indian foundry operations
Scope of six sigma in indian foundry operations
 
CPU vulnerabilities - where are we now?
CPU vulnerabilities - where are we now?CPU vulnerabilities - where are we now?
CPU vulnerabilities - where are we now?
 
Awd3 m1 desi
Awd3 m1 desiAwd3 m1 desi
Awd3 m1 desi
 
JKSimMet Course - Part 1
JKSimMet Course - Part 1JKSimMet Course - Part 1
JKSimMet Course - Part 1
 
working capital manegment
working capital manegmentworking capital manegment
working capital manegment
 
Physics Class 9th Chapter 1
Physics Class 9th Chapter 1Physics Class 9th Chapter 1
Physics Class 9th Chapter 1
 
[2018 台灣人工智慧學校校友年會] 產業經驗分享: 如何用最少的訓練樣本,得到最好的深度學習影像分析結果,減少一半人力,提升一倍品質 / 李明達
[2018 台灣人工智慧學校校友年會] 產業經驗分享: 如何用最少的訓練樣本,得到最好的深度學習影像分析結果,減少一半人力,提升一倍品質 / 李明達[2018 台灣人工智慧學校校友年會] 產業經驗分享: 如何用最少的訓練樣本,得到最好的深度學習影像分析結果,減少一半人力,提升一倍品質 / 李明達
[2018 台灣人工智慧學校校友年會] 產業經驗分享: 如何用最少的訓練樣本,得到最好的深度學習影像分析結果,減少一半人力,提升一倍品質 / 李明達
 
MongoUK 2011 - Rplacing RabbitMQ with MongoDB
MongoUK 2011 - Rplacing RabbitMQ with MongoDBMongoUK 2011 - Rplacing RabbitMQ with MongoDB
MongoUK 2011 - Rplacing RabbitMQ with MongoDB
 

Recently uploaded

Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Ramesh Iyer
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
Product School
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Inflectra
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
Product School
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
Product School
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
DianaGray10
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Cheryl Hung
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 

Recently uploaded (20)

Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 

Js compilation falsy values slides

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. - heaps cost memory\n - compilation takes time\n
  54. - method - well known, tested\n - tracing - very new, Mozilla, LuaJIT and PyPy the first ones to try it out\n
  55. - fine tuning, compilation vs. time, compression vs. memory etc.\n
  56. - small functions\n - reduce branching\n - keep var types (int vs. float!)\n
  57. \n
  58. \n
  59. \n
  60. \n