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

KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
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
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
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
 
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
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
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
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceBrainSell Technologies
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
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
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 

Recently uploaded (20)

KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
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
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
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...
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
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
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. Salesforce
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
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
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 

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