SlideShare a Scribd company logo
1 of 45
Download to read offline
Arnaud Bouchez - Synopse
Frameworks
Expressiveness
Arnaud Bouchez
• Open Source Founder
mORMot 2
SynPDF, dmustache
• Modern Delphi and FPC
DDD, SOA, ORM, MVC
Performance, SOLID
• Synopse
https://synopse.info
Arnaud Bouchez
dev @ https://tranquil.it/wapt
SW deployment Windows updates
IT Inventory
Arnaud Bouchez
dev @ https://tranquil.it/wapt
+7000 +400 +1 300 000
sw packages customers pc equipped
Frameworks Expressiveness
Frameworks Expressiveness
not performance (tomorrow)
not exhaustive
not Delphi centric
Menu du jour
• The TFB Challenge
• Languages & Frameworks
• Object Pascal & mORMot
• Some Thoughts
The TFB Challenge
https://www.techempower.com/benchmarks
The TFB Challenge
The TFB Challenge
Web Frameworks Benchmarks
• Since 2013, a collaborative project
• Now one official round per year
• Hundredths of frameworks tested
• Seven web /endpoints tested
• 24/7 continuous tests on dedicated HW
The TFB Challenge
One official round per year
• Round 22 is just finished
• Round 22 should be published very soon
• Including object pascal with mORMot
The TFB Challenge
Hundredths of frameworks tested
• Currently 301 frameworks
• In 791 flavors/configurations
• All languages
The TFB Challenge
Hundredths of frameworks tested
• Currently 301 frameworks
• In 791 flavors/configurations
• All languages: C, C++, CFML, C#, Clojure,
Crystal, D, Dart, Elixir, Erlang, F#, Fortran,
Go, Groovy, Haskell, Java, JavaScript, Julia,
Kotlin, Lisp, Lua, Nim, OCaml, PhP,
Pascal, Prolog, Python, R, Racket, Ruby, Rust,
Scala, Swift, TypeScript, Ur, V, VB , Vala …
The TFB Challenge
Seven web /endpoints tested
/plaintext
/json
/db
/query?queries=###
/cached_queries?count=###
/update?queries=###
/fortunes
The TFB Challenge
24/7 continuous tests on big HW
• Three homogeneous Dell R440 servers:
as web client, web server, database
• Each with an Intel Xeon Gold 5120 CPU
• 32 GB of memory, enterprise SSD
• Dedicated Cisco 10-gigabit Ethernet switch
The TFB Challenge
24/7 continuous tests on big HW
Latest runs are available at
https://tfb-status.techempower.com
The TFB Challenge
Motivation(s)
• Officially: measure performance
to reduce cost of ownership
and enhance usability and scalability
• For us: investigate the diverse philosophies
of the frameworks
and their corresponding languages
The TFB Challenge
Demo
• Reproduce on my dev laptop
• Compiled on Linux with Lazarus
• Run locally on the very same machine
Languages & Frameworks
Languages & Frameworks
Opinioned Language Clustering
• Old and boring: C, C++, C#, Java
• Trendy: Go, Rust
• Fast scripts: JavaScript, TypeScript
• Slow scripts: PhP, Python, Ruby
• Esoteric: xyz…
Languages & Frameworks
Opinioned Language Clustering
• Old and boring: C, C++, C#, Java
• Trendy: Go, Rust
• Fast scripts: JavaScript, TypeScript
• Slow scripts: PhP, Python, Ruby
• Esoteric: xyz… object pascal?
Languages & Frameworks
Performance and Languages
• Some trends:
most Rust is on top, most Python is on bottom
• But it depends on the framework
e.g. you can have poorly behaving C++
and amazing or dead slow JavaScript
Languages & Frameworks
Performance and Frameworks
• Some are Performance focused
other are Features focused
• Proof of concept
or Production ready
• Usually, the more featured, the slower
and top frameworks are more like POC
Languages & Frameworks
Performance Bottlenecks
• The Web Server
• The Database layer
• The threading/execution Model
• The RTL (JSON, heap…)
Languages & Frameworks
Performance Languages
• async / coroutines :
when the threading/execution Model
is built into the language
• The fastest use it (C++, Rust, Go, C#, JS)
• The slowest (ruby, python) are not compiled
and have scaling issues (giant locks)
Languages & Frameworks
Performance Languages
asp.net core
https://github.com/TechEmpower/Framewo
rkBenchmarks/tree/master/frameworks/C
Sharp/aspnetcore/src/Platform
Languages & Frameworks
Performance Languages
c libh2o
https://github.com/TechEmpower/Framewo
rkBenchmarks/blob/master/frameworks/C
/h2o/src/handlers/plaintext.c
Languages & Frameworks
Performance Languages
Rust ntex
https://github.com/TechEmpower/Framewo
rkBenchmarks/blob/master/frameworks/R
ust/ntex/src/main.rs
Languages & Frameworks
Performance Languages
JavaScript just
https://github.com/TechEmpower/Framewo
rkBenchmarks/blob/master/frameworks/J
avaScript/just/techempower.js
Languages & Frameworks
Performance Languages
Java vertx
https://github.com/TechEmpower/Framewo
rkBenchmarks/blob/master/frameworks/J
ava/vertx/src/main/java/vertx/App.java
Languages & Frameworks
Performance Frameworks
• Manual tuning in user code
with minimalistic/baremetal framework
• High-level user code
and very optimized/PoC framework
Languages & Frameworks
Performance and Production
• e.g. custom PostgreSQL driver
using (at best) MD5 password
• no parsing of the HTTP headers
• optimized for a few identical requests
from a fast local client
• no GC/stability measurement
Object Pascal & mORMot
Object Pascal & mORMot
Object Pascal – why not?
• Delphi is mostly Windows-centric
and not an Open Source compiler
• FPC is a niche, underestimated compiler
• Old and boring language
• Mostly used on client side for RAD UI
with a 2-layer DB design
not a 3-layer Web framework design
Object Pascal & mORMot
Object Pascal
• As system language:
pointers, buffers - close to the metal
• As high-level language:
class, string, interface - abstract
Object Pascal & mORMot
mORMot 2
• 10+ years of Web Server code experience
• Full rewrite
for performance and maintainability
• Validated with the TFB challenge
for stability and scalability
Object Pascal & mORMot
mORMot 2
• Cross-platform & cross-compiler RTL
• REST over several Web Servers
• High level SOA/REST using interfaces
• Low level WEB/HTTP classes
Object Pascal & mORMot
mORMot 2
• Cross-platform & cross-compiler RTL
• REST over several Web Servers
• High level SOA/REST using interfaces
• Low level WEB/HTTP classes
Object Pascal & mORMot
mORMot 2 TFB Sample
• Command line tool
• Data/ORM structures
• HTTP routing
• Database/ORM layers
• Built-in {{mustache}} templates
• Asynchronous execution
Object Pascal & mORMot
mORMot 2 TFB Sample
https://github.com/synopse/mORMot2/tre
e/master/ex/techempower-bench
Object Pascal & mORMot
Performance Frameworks
• Manual tuning in user code
with minimalistic/baremetal framework
• High-level user code
and very optimized/PoC framework
Some Thoughts
Some Thoughts
No Magic Bullet
• “Fast” languages could make
“Slow” projects
• “Slow” languages could make
“Fast” projects
Some Thoughts
Pascal Still Relevant
• Easy to read and write
• ‘asynchronous-of-the-poor’ ™
anonymous methods do help
still missing an async keyword
• Not restricted to RAD and Windows
• Open Source rocks (FPC & mORMot)
Frameworks Expressiveness
Questions? Wishes?
Opinions? Reactions?
No Marmots Were Harmed in the Making of This Session

More Related Content

Similar to EKON27-FrameworksExpressiveness.pdf

Kafka Summit SF 2017 - Kafka and the Polyglot Programmer
Kafka Summit SF 2017 - Kafka and the Polyglot ProgrammerKafka Summit SF 2017 - Kafka and the Polyglot Programmer
Kafka Summit SF 2017 - Kafka and the Polyglot Programmerconfluent
 
Meetup. Technologies Intro for Non-Tech People
Meetup. Technologies Intro for Non-Tech PeopleMeetup. Technologies Intro for Non-Tech People
Meetup. Technologies Intro for Non-Tech PeopleIT Arena
 
Structured web apps
Structured web appsStructured web apps
Structured web appsSheng Tian
 
The Architect Way - JSCamp.asia 2012
The Architect Way - JSCamp.asia 2012The Architect Way - JSCamp.asia 2012
The Architect Way - JSCamp.asia 2012Jan Jongboom
 
Ruby Performance - The Last Mile - RubyConf India 2016
Ruby Performance - The Last Mile - RubyConf India 2016Ruby Performance - The Last Mile - RubyConf India 2016
Ruby Performance - The Last Mile - RubyConf India 2016Charles Nutter
 
EKON27-FrameworksTuning.pdf
EKON27-FrameworksTuning.pdfEKON27-FrameworksTuning.pdf
EKON27-FrameworksTuning.pdfArnaud Bouchez
 
The Characteristics of a Successful SPA
The Characteristics of a Successful SPAThe Characteristics of a Successful SPA
The Characteristics of a Successful SPAGil Fink
 
difference between c c++ c#
difference between c c++ c#difference between c c++ c#
difference between c c++ c#Sireesh K
 
APIs distribuidos con alta escalabilidad
APIs distribuidos con alta escalabilidadAPIs distribuidos con alta escalabilidad
APIs distribuidos con alta escalabilidadSoftware Guru
 
Go: What's Different ?
Go: What's Different ?Go: What's Different ?
Go: What's Different ?Tarun Vashisth
 
Markup languages and warp-speed documentation
Markup languages and warp-speed documentationMarkup languages and warp-speed documentation
Markup languages and warp-speed documentationLois Patterson
 
Lois Patterson: Markup Languages and Warp-Speed Documentation
Lois Patterson:  Markup Languages and Warp-Speed DocumentationLois Patterson:  Markup Languages and Warp-Speed Documentation
Lois Patterson: Markup Languages and Warp-Speed DocumentationJack Molisani
 
Intro to Programming Lang.pptx
Intro to Programming Lang.pptxIntro to Programming Lang.pptx
Intro to Programming Lang.pptxssuser51ead3
 
Cloud Foundry 百日行 振り返り
Cloud Foundry 百日行 振り返りCloud Foundry 百日行 振り返り
Cloud Foundry 百日行 振り返りnota-ja
 
Isomorphic JavaScript with Node, WebPack, and React
Isomorphic JavaScript with Node, WebPack, and ReactIsomorphic JavaScript with Node, WebPack, and React
Isomorphic JavaScript with Node, WebPack, and ReactTyler Peterson
 
Introduction to Micronaut - JBCNConf 2019
Introduction to Micronaut - JBCNConf 2019Introduction to Micronaut - JBCNConf 2019
Introduction to Micronaut - JBCNConf 2019graemerocher
 

Similar to EKON27-FrameworksExpressiveness.pdf (20)

Kafka Summit SF 2017 - Kafka and the Polyglot Programmer
Kafka Summit SF 2017 - Kafka and the Polyglot ProgrammerKafka Summit SF 2017 - Kafka and the Polyglot Programmer
Kafka Summit SF 2017 - Kafka and the Polyglot Programmer
 
Meetup. Technologies Intro for Non-Tech People
Meetup. Technologies Intro for Non-Tech PeopleMeetup. Technologies Intro for Non-Tech People
Meetup. Technologies Intro for Non-Tech People
 
Stackato v2
Stackato v2Stackato v2
Stackato v2
 
Stackato
StackatoStackato
Stackato
 
Structured web apps
Structured web appsStructured web apps
Structured web apps
 
The Architect Way - JSCamp.asia 2012
The Architect Way - JSCamp.asia 2012The Architect Way - JSCamp.asia 2012
The Architect Way - JSCamp.asia 2012
 
Ruby Performance - The Last Mile - RubyConf India 2016
Ruby Performance - The Last Mile - RubyConf India 2016Ruby Performance - The Last Mile - RubyConf India 2016
Ruby Performance - The Last Mile - RubyConf India 2016
 
.Net Core
.Net Core.Net Core
.Net Core
 
EKON27-FrameworksTuning.pdf
EKON27-FrameworksTuning.pdfEKON27-FrameworksTuning.pdf
EKON27-FrameworksTuning.pdf
 
The Characteristics of a Successful SPA
The Characteristics of a Successful SPAThe Characteristics of a Successful SPA
The Characteristics of a Successful SPA
 
difference between c c++ c#
difference between c c++ c#difference between c c++ c#
difference between c c++ c#
 
APIs distribuidos con alta escalabilidad
APIs distribuidos con alta escalabilidadAPIs distribuidos con alta escalabilidad
APIs distribuidos con alta escalabilidad
 
SGCE 2015 REST APIs
SGCE 2015 REST APIsSGCE 2015 REST APIs
SGCE 2015 REST APIs
 
Go: What's Different ?
Go: What's Different ?Go: What's Different ?
Go: What's Different ?
 
Markup languages and warp-speed documentation
Markup languages and warp-speed documentationMarkup languages and warp-speed documentation
Markup languages and warp-speed documentation
 
Lois Patterson: Markup Languages and Warp-Speed Documentation
Lois Patterson:  Markup Languages and Warp-Speed DocumentationLois Patterson:  Markup Languages and Warp-Speed Documentation
Lois Patterson: Markup Languages and Warp-Speed Documentation
 
Intro to Programming Lang.pptx
Intro to Programming Lang.pptxIntro to Programming Lang.pptx
Intro to Programming Lang.pptx
 
Cloud Foundry 百日行 振り返り
Cloud Foundry 百日行 振り返りCloud Foundry 百日行 振り返り
Cloud Foundry 百日行 振り返り
 
Isomorphic JavaScript with Node, WebPack, and React
Isomorphic JavaScript with Node, WebPack, and ReactIsomorphic JavaScript with Node, WebPack, and React
Isomorphic JavaScript with Node, WebPack, and React
 
Introduction to Micronaut - JBCNConf 2019
Introduction to Micronaut - JBCNConf 2019Introduction to Micronaut - JBCNConf 2019
Introduction to Micronaut - JBCNConf 2019
 

More from Arnaud Bouchez

Ekon25 mORMot 2 Server-Side Notifications
Ekon25 mORMot 2 Server-Side NotificationsEkon25 mORMot 2 Server-Side Notifications
Ekon25 mORMot 2 Server-Side NotificationsArnaud Bouchez
 
Ekon25 mORMot 2 Cryptography
Ekon25 mORMot 2 CryptographyEkon25 mORMot 2 Cryptography
Ekon25 mORMot 2 CryptographyArnaud Bouchez
 
Ekon24 from Delphi to AVX2
Ekon24 from Delphi to AVX2Ekon24 from Delphi to AVX2
Ekon24 from Delphi to AVX2Arnaud Bouchez
 
Ekon23 (2) Kingdom-Driven-Design applied to Social Media with mORMot
Ekon23 (2) Kingdom-Driven-Design applied to Social Media with mORMotEkon23 (2) Kingdom-Driven-Design applied to Social Media with mORMot
Ekon23 (2) Kingdom-Driven-Design applied to Social Media with mORMotArnaud Bouchez
 
Ekon23 (1) Kingdom-Driven-Design
Ekon23 (1) Kingdom-Driven-DesignEkon23 (1) Kingdom-Driven-Design
Ekon23 (1) Kingdom-Driven-DesignArnaud Bouchez
 
High Performance Object Pascal Code on Servers (at EKON 22)
High Performance Object Pascal Code on Servers (at EKON 22)High Performance Object Pascal Code on Servers (at EKON 22)
High Performance Object Pascal Code on Servers (at EKON 22)Arnaud Bouchez
 
Object Pascal Clean Code Guidelines Proposal (at EKON 22)
Object Pascal Clean Code Guidelines Proposal (at EKON 22)Object Pascal Clean Code Guidelines Proposal (at EKON 22)
Object Pascal Clean Code Guidelines Proposal (at EKON 22)Arnaud Bouchez
 
Ekon21 Microservices - SOLID Meets SOA
Ekon21 Microservices - SOLID Meets SOAEkon21 Microservices - SOLID Meets SOA
Ekon21 Microservices - SOLID Meets SOAArnaud Bouchez
 
Ekon21 Microservices - Event Driven Design
Ekon21 Microservices - Event Driven DesignEkon21 Microservices - Event Driven Design
Ekon21 Microservices - Event Driven DesignArnaud Bouchez
 
Ekon20 mORMot WorkShop Delphi
Ekon20 mORMot WorkShop DelphiEkon20 mORMot WorkShop Delphi
Ekon20 mORMot WorkShop DelphiArnaud Bouchez
 
Ekon20 mORMot SOA Delphi Conference
Ekon20 mORMot SOA Delphi Conference Ekon20 mORMot SOA Delphi Conference
Ekon20 mORMot SOA Delphi Conference Arnaud Bouchez
 
Ekon20 mORMot Legacy Code Technical Debt Delphi Conference
Ekon20 mORMot Legacy Code Technical Debt Delphi Conference Ekon20 mORMot Legacy Code Technical Debt Delphi Conference
Ekon20 mORMot Legacy Code Technical Debt Delphi Conference Arnaud Bouchez
 
D1 from interfaces to solid
D1 from interfaces to solidD1 from interfaces to solid
D1 from interfaces to solidArnaud Bouchez
 
D2 domain driven-design
D2 domain driven-designD2 domain driven-design
D2 domain driven-designArnaud Bouchez
 

More from Arnaud Bouchez (20)

Ekon25 mORMot 2 Server-Side Notifications
Ekon25 mORMot 2 Server-Side NotificationsEkon25 mORMot 2 Server-Side Notifications
Ekon25 mORMot 2 Server-Side Notifications
 
Ekon25 mORMot 2 Cryptography
Ekon25 mORMot 2 CryptographyEkon25 mORMot 2 Cryptography
Ekon25 mORMot 2 Cryptography
 
Ekon24 from Delphi to AVX2
Ekon24 from Delphi to AVX2Ekon24 from Delphi to AVX2
Ekon24 from Delphi to AVX2
 
Ekon24 mORMot 2
Ekon24 mORMot 2Ekon24 mORMot 2
Ekon24 mORMot 2
 
Ekon23 (2) Kingdom-Driven-Design applied to Social Media with mORMot
Ekon23 (2) Kingdom-Driven-Design applied to Social Media with mORMotEkon23 (2) Kingdom-Driven-Design applied to Social Media with mORMot
Ekon23 (2) Kingdom-Driven-Design applied to Social Media with mORMot
 
Ekon23 (1) Kingdom-Driven-Design
Ekon23 (1) Kingdom-Driven-DesignEkon23 (1) Kingdom-Driven-Design
Ekon23 (1) Kingdom-Driven-Design
 
High Performance Object Pascal Code on Servers (at EKON 22)
High Performance Object Pascal Code on Servers (at EKON 22)High Performance Object Pascal Code on Servers (at EKON 22)
High Performance Object Pascal Code on Servers (at EKON 22)
 
Object Pascal Clean Code Guidelines Proposal (at EKON 22)
Object Pascal Clean Code Guidelines Proposal (at EKON 22)Object Pascal Clean Code Guidelines Proposal (at EKON 22)
Object Pascal Clean Code Guidelines Proposal (at EKON 22)
 
Ekon21 Microservices - SOLID Meets SOA
Ekon21 Microservices - SOLID Meets SOAEkon21 Microservices - SOLID Meets SOA
Ekon21 Microservices - SOLID Meets SOA
 
Ekon21 Microservices - Event Driven Design
Ekon21 Microservices - Event Driven DesignEkon21 Microservices - Event Driven Design
Ekon21 Microservices - Event Driven Design
 
Ekon20 mORMot WorkShop Delphi
Ekon20 mORMot WorkShop DelphiEkon20 mORMot WorkShop Delphi
Ekon20 mORMot WorkShop Delphi
 
Ekon20 mORMot SOA Delphi Conference
Ekon20 mORMot SOA Delphi Conference Ekon20 mORMot SOA Delphi Conference
Ekon20 mORMot SOA Delphi Conference
 
Ekon20 mORMot Legacy Code Technical Debt Delphi Conference
Ekon20 mORMot Legacy Code Technical Debt Delphi Conference Ekon20 mORMot Legacy Code Technical Debt Delphi Conference
Ekon20 mORMot Legacy Code Technical Debt Delphi Conference
 
2016 mORMot
2016 mORMot2016 mORMot
2016 mORMot
 
A1 from n tier to soa
A1 from n tier to soaA1 from n tier to soa
A1 from n tier to soa
 
D1 from interfaces to solid
D1 from interfaces to solidD1 from interfaces to solid
D1 from interfaces to solid
 
A3 from sql to orm
A3 from sql to ormA3 from sql to orm
A3 from sql to orm
 
A2 from soap to rest
A2 from soap to restA2 from soap to rest
A2 from soap to rest
 
D2 domain driven-design
D2 domain driven-designD2 domain driven-design
D2 domain driven-design
 
A4 from rad to mvc
A4 from rad to mvcA4 from rad to mvc
A4 from rad to mvc
 

Recently uploaded

PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentationvaddepallysandeep122
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy López
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....kzayra69
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Natan Silnitsky
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 

Recently uploaded (20)

PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentation
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
Advantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your BusinessAdvantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your Business
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 

EKON27-FrameworksExpressiveness.pdf

  • 1. Arnaud Bouchez - Synopse Frameworks Expressiveness
  • 2. Arnaud Bouchez • Open Source Founder mORMot 2 SynPDF, dmustache • Modern Delphi and FPC DDD, SOA, ORM, MVC Performance, SOLID • Synopse https://synopse.info
  • 3. Arnaud Bouchez dev @ https://tranquil.it/wapt SW deployment Windows updates IT Inventory
  • 4. Arnaud Bouchez dev @ https://tranquil.it/wapt +7000 +400 +1 300 000 sw packages customers pc equipped
  • 6. Frameworks Expressiveness not performance (tomorrow) not exhaustive not Delphi centric
  • 7. Menu du jour • The TFB Challenge • Languages & Frameworks • Object Pascal & mORMot • Some Thoughts
  • 10. The TFB Challenge Web Frameworks Benchmarks • Since 2013, a collaborative project • Now one official round per year • Hundredths of frameworks tested • Seven web /endpoints tested • 24/7 continuous tests on dedicated HW
  • 11. The TFB Challenge One official round per year • Round 22 is just finished • Round 22 should be published very soon • Including object pascal with mORMot
  • 12. The TFB Challenge Hundredths of frameworks tested • Currently 301 frameworks • In 791 flavors/configurations • All languages
  • 13. The TFB Challenge Hundredths of frameworks tested • Currently 301 frameworks • In 791 flavors/configurations • All languages: C, C++, CFML, C#, Clojure, Crystal, D, Dart, Elixir, Erlang, F#, Fortran, Go, Groovy, Haskell, Java, JavaScript, Julia, Kotlin, Lisp, Lua, Nim, OCaml, PhP, Pascal, Prolog, Python, R, Racket, Ruby, Rust, Scala, Swift, TypeScript, Ur, V, VB , Vala …
  • 14. The TFB Challenge Seven web /endpoints tested /plaintext /json /db /query?queries=### /cached_queries?count=### /update?queries=### /fortunes
  • 15. The TFB Challenge 24/7 continuous tests on big HW • Three homogeneous Dell R440 servers: as web client, web server, database • Each with an Intel Xeon Gold 5120 CPU • 32 GB of memory, enterprise SSD • Dedicated Cisco 10-gigabit Ethernet switch
  • 16. The TFB Challenge 24/7 continuous tests on big HW Latest runs are available at https://tfb-status.techempower.com
  • 17. The TFB Challenge Motivation(s) • Officially: measure performance to reduce cost of ownership and enhance usability and scalability • For us: investigate the diverse philosophies of the frameworks and their corresponding languages
  • 18. The TFB Challenge Demo • Reproduce on my dev laptop • Compiled on Linux with Lazarus • Run locally on the very same machine
  • 20. Languages & Frameworks Opinioned Language Clustering • Old and boring: C, C++, C#, Java • Trendy: Go, Rust • Fast scripts: JavaScript, TypeScript • Slow scripts: PhP, Python, Ruby • Esoteric: xyz…
  • 21. Languages & Frameworks Opinioned Language Clustering • Old and boring: C, C++, C#, Java • Trendy: Go, Rust • Fast scripts: JavaScript, TypeScript • Slow scripts: PhP, Python, Ruby • Esoteric: xyz… object pascal?
  • 22. Languages & Frameworks Performance and Languages • Some trends: most Rust is on top, most Python is on bottom • But it depends on the framework e.g. you can have poorly behaving C++ and amazing or dead slow JavaScript
  • 23. Languages & Frameworks Performance and Frameworks • Some are Performance focused other are Features focused • Proof of concept or Production ready • Usually, the more featured, the slower and top frameworks are more like POC
  • 24. Languages & Frameworks Performance Bottlenecks • The Web Server • The Database layer • The threading/execution Model • The RTL (JSON, heap…)
  • 25. Languages & Frameworks Performance Languages • async / coroutines : when the threading/execution Model is built into the language • The fastest use it (C++, Rust, Go, C#, JS) • The slowest (ruby, python) are not compiled and have scaling issues (giant locks)
  • 26. Languages & Frameworks Performance Languages asp.net core https://github.com/TechEmpower/Framewo rkBenchmarks/tree/master/frameworks/C Sharp/aspnetcore/src/Platform
  • 27. Languages & Frameworks Performance Languages c libh2o https://github.com/TechEmpower/Framewo rkBenchmarks/blob/master/frameworks/C /h2o/src/handlers/plaintext.c
  • 28. Languages & Frameworks Performance Languages Rust ntex https://github.com/TechEmpower/Framewo rkBenchmarks/blob/master/frameworks/R ust/ntex/src/main.rs
  • 29. Languages & Frameworks Performance Languages JavaScript just https://github.com/TechEmpower/Framewo rkBenchmarks/blob/master/frameworks/J avaScript/just/techempower.js
  • 30. Languages & Frameworks Performance Languages Java vertx https://github.com/TechEmpower/Framewo rkBenchmarks/blob/master/frameworks/J ava/vertx/src/main/java/vertx/App.java
  • 31. Languages & Frameworks Performance Frameworks • Manual tuning in user code with minimalistic/baremetal framework • High-level user code and very optimized/PoC framework
  • 32. Languages & Frameworks Performance and Production • e.g. custom PostgreSQL driver using (at best) MD5 password • no parsing of the HTTP headers • optimized for a few identical requests from a fast local client • no GC/stability measurement
  • 33. Object Pascal & mORMot
  • 34. Object Pascal & mORMot Object Pascal – why not? • Delphi is mostly Windows-centric and not an Open Source compiler • FPC is a niche, underestimated compiler • Old and boring language • Mostly used on client side for RAD UI with a 2-layer DB design not a 3-layer Web framework design
  • 35. Object Pascal & mORMot Object Pascal • As system language: pointers, buffers - close to the metal • As high-level language: class, string, interface - abstract
  • 36. Object Pascal & mORMot mORMot 2 • 10+ years of Web Server code experience • Full rewrite for performance and maintainability • Validated with the TFB challenge for stability and scalability
  • 37. Object Pascal & mORMot mORMot 2 • Cross-platform & cross-compiler RTL • REST over several Web Servers • High level SOA/REST using interfaces • Low level WEB/HTTP classes
  • 38. Object Pascal & mORMot mORMot 2 • Cross-platform & cross-compiler RTL • REST over several Web Servers • High level SOA/REST using interfaces • Low level WEB/HTTP classes
  • 39. Object Pascal & mORMot mORMot 2 TFB Sample • Command line tool • Data/ORM structures • HTTP routing • Database/ORM layers • Built-in {{mustache}} templates • Asynchronous execution
  • 40. Object Pascal & mORMot mORMot 2 TFB Sample https://github.com/synopse/mORMot2/tre e/master/ex/techempower-bench
  • 41. Object Pascal & mORMot Performance Frameworks • Manual tuning in user code with minimalistic/baremetal framework • High-level user code and very optimized/PoC framework
  • 43. Some Thoughts No Magic Bullet • “Fast” languages could make “Slow” projects • “Slow” languages could make “Fast” projects
  • 44. Some Thoughts Pascal Still Relevant • Easy to read and write • ‘asynchronous-of-the-poor’ ™ anonymous methods do help still missing an async keyword • Not restricted to RAD and Windows • Open Source rocks (FPC & mORMot)
  • 45. Frameworks Expressiveness Questions? Wishes? Opinions? Reactions? No Marmots Were Harmed in the Making of This Session