SlideShare ist ein Scribd-Unternehmen logo
1 von 58
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
www.filemaker-konferenz.com
Performance Questions & Test Results
HOnza Koudelka
FileMaker 17 Performance Lab
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
HOnza Koudelka
• Co-founder and co-owner of 24U Software,
FBA Platinum Member
• Developing FileMaker solutions since 1991
• FileMaker 8, 10, 11, 12, 13, 14, 15, 16, and 17
Certified Developer
• Leading team of 5 other certified developers
• Winner of the FileMaker DevCon 2015 Developer Cup
• FileMaker Mad Dog Award 2011 winner
• Mad Optimizer and achiever of the impossible…
• Vendor session speaker at FileMaker DevCon, spoke at Pause[x]London and
Pause[x]Berlin, and remotely at PauseOnError Portland
• FileMaker Konferenz 2016 & 2017 speaker
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
Agenda
• FileMaker 17 Automated Test Results
• Recent Discoveries
• Benchmarking Techniques
• Optimization Techniques
• Questions & Answers
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
Why Performance Lab?
• Perceived speed defines what’s important
• Technical speed makes things possible
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
Faster is not always better
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
Test Equipment
• Mac Pro (early 2008)
• 2 x 2,8 GHz Intel Xeon
• 8 GB RAM
• Separate hard drive for data
• macOS 10.13 High Sierra
• FileMaker Server versions 15, 16, 17
• FileMaker Pro Advanced 12, 13, 14, 15, 16, 17
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
Automated tests performed
• Export & Import Records as tab delimited text
• Creating records with a lot of text
• Sort Records by indexed/unindexed field
• Perform Find
• indexed vs unindexed field
• small vs large result found set
• number vs text
• unique vs common values
• Position vs PatternCount
• Replace Field Contents vs Looped Set Field
• Summary fields vs Aggregate functions vs ExecuteSQL
• Delete All Records, Truncate Table, Delete All Found Records (leaving one record)
159
858
tests
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
Manually tested
• Spider vs Anchor/Buoy vs Selector-Connector
• Container vs text
• Structure impact on Set Field performance
• Slow network impact
• Layout rendering
• Conditional formatting
• Relationship sorting
• Data API vs PHP API
NEW
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
What was NOT tested
• Multiple users
• Multiple concurrent tasks
• Working with container fields
• Exact amounts of data transferred between client and server
• FileMaker Go
• FileMaker WebDirect
• FileMaker Cloud
• XML / PHP / ODBC / JDBC connections
• Two-machine deployment
• FileMaker Server with enabled SSL (except for Data API vs PHP API)
• Server-side schedules, including backup schedules
• Different cache sizes and other configuration differences
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
FileMaker 17 Test Results
12 13 14 15 16
? ?
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
Sorting records
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
Performing Find in a simple table
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
Batch-modifying records
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
Batch-modifying records
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
Batch-modifying records
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
Batch-modifying records
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
FMSE shares resources with FMS
Indexed Unindexed
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
Recent Discoveries
• Spider vs Anchor/Buoy vs Selector-Connector
• Container vs text (danger of Base64)
• Structure impact on Set Field performance
• Slow network impact
• Layout rendering
• Expensive objects
• Conditional formatting
• Relationship sorting
• Data API vs PHP API
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
Spider vs Anchor/Buoy vs Selector-Connector
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
Under the Hood: Opening a File
• Seven-step opening process
• Step 3: Create or reuse temp file (no reuse for Perform Script On Server)
• Step 5: DBEngine processing
• List of tables
• Relationships
• Master map of all table occurrences
• Step 6: FMEngine processing
• Window
• Layout, Value lists, Font mappings, Custom menus
• Script triggers
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
Why is this important?
• User opens database only once or twice per day
• Every CWP session opens a file
• Every server-side script creates a new client session
• Every Perform Script On Server creates a new client session
• Perform Script On Server can be run asynchronously (without waiting)
• One user can start multiple server-side scripts within a single second
1 second to start a script = TOO SLOW
How long does your solution take to open?
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
Real solution test
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
Conversion to Anchor/Buoy
Before:
• 2359 total table occurrences
• 799 table occurrences in largest TOG
• 13 relationships longest path between TOs
After:
• Largest TOG split to 21 smaller TOGs
• 2349 total table occurrences
• 282 table occurrences in largest TOG
• 9 relationships longest path between TOs
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
After conversion to Anchor/Buoy
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
After adding Selector-Connector
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
Time to Perform Script on Server
Spider Anchor/Buoy Selector
Connector
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
Beware Base64
• Real experience from a customer
• Huge containers can be stored as text
• Doing so can have fatal impact on performance
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
Insanely slow Set Field
• Posted in FileMaker Community
• Blank layout
• Isolated table occurrence
• No records in any table
• Open locally in FileMaker Pro Advanced
• Creating 100 records in a loop takes…
30 seconds
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
Insanely slow Set Field
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
Insanely slow Set Field
• 1037 relationships
• 1004 in this TOG
• 690 around this TO
• 7 hops longest path
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
Insanely slow Set Field
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
Insanely slow Set Field
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
Insanely slow Set Field
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
Insanely slow Set Field
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
Insanely slow Set Field
1037
1116 1194
7516
9701
Total number
of relationships
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
Insanely slow Set Field
• large number of relationships all depend on the contents of one field
• FileMaker looks for all the possible combinations of relationships that can
be invalidated because that field changes
• That information is not in the join graph but in the field dependencies stored as
part of the field definitions.
• Roughly 27,000 possible joins that could be affected
• Higher level view code looks at all affected TOs and checks to see if any base
tables of those TOs are currently in any window and if there are any portals
• => Potential for optimization in future versions
• Thanks to Clay Maeckel for this under-the-hood info
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
Slow network impact
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
Notifications are sent…
• from server to client as part of reply to next client’s request
• whenever a change is committed
• to every client having the file open (even hidden)
• about every record (unless entire table is changed)
• in about 32K chunks
• without actual record data
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
Top Factors
• Bandwidth - amount of data transferred
• Latency - number of calls
• Packet Loss / Stability - persistency, online vs synchronization
• Examine with Network Link Conditioner & Top Call Stats
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
Things to avoid with connected users
• Modifying huge amounts
of records (in open files)
• Changing data in records
containing keys for portals
• Changing relationship
graph (in any file)
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
Recent optimization - 24U Collector
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
Recent optimization - 24U Collector
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
Layout rendering
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
Layout rendering
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
Layout rendering
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
Layout rendering
• Toolbox_GetTimestamp
• Benchmarks in global variable
• OnTimer script trigger
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
Layout rendering
• 8 conditional formatting rules
• 31 columns
• 29 records
• 8 x 31 x 29 = 7192
• Little chance to optimize time
per calc, it is necessary to
optimize their count
• Almost 7 seconds before
starting to evaluate conditional
formatting due to button bars &
popovers
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
Layout rendering
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
Layout rendering
• Repeating text field replaced button bar (86.8 % saved)
• TextColor replaced conditional formatting
• Optimized condition calculation
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
Data API vs PHP API
• PHP API is based on Tomcat
• Data API is based on Node.js
• Data API is supposed to be faster and more stable
• PHP API is deprecated and disabled by default
• Data API requires HTTPS only, PHP API allows HTTP
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
Data API vs PHP API
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
Data API vs PHP API
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
Data API vs PHP API
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
WPE after trying to fetch 300k records
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
Benchmarking Techniques
• Scripts
• 24U FM Bench
• Get ( CurrentTimeUTCMilliseconds )
• Calculations
• 24U FM Bench
• Toolbox_GetTimestamp (microseconds)
• Layouts & other
• Unstored calculations + OnTimer script trigger
• Binary Splitting
• Top Call Stats
• Network Link Conditioner
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
Top Optimization Techniques
• Remove it if you don’t need it
• Script layouts
• Virtual List
• Perform Script On Server (or server-side queue)
• Pre-calculated summaries
• Simpler relationship graph
• Calculated text color instead of conditional formatting
• Card window instead of popover
• Avoid too many button bars
• Sort portal instead of relationship
• New table with fewer fields
• Conditional Set Field
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
More resources
• FileMaker Community > Discussions > Performance
• FileMaker DevCon Session Recordings (available on YouTube)
• Performance related sessions
• Under the Hood sessions
• FM Academy & Skeleton Key webinars (FMAcademy.com)
• “Designing for WAN Performance”
• FileMaker Optimizers LinkedIn Group (FMOptimizers.com)
• 24U FM Bench (FMBench.com)
• Big-O Cheat Sheet (bigocheatsheet.com)
• A Gentle Introduction to Algorithm Complexity Analysis (discrete.gr/complexity/)
• Enabling HTTPS Without Sacrificing Your Web Performance by Billy Hoffmann
(https://zoompf.com/blog/2014/12/optimizing-tls-handshake/)
• Ask for consultation at honza@24uSoftware.com or 24usw.com/consult
9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018
FileMaker 17 Performance Lab | HOnza Koudelka
Vielen Dank unseren Sponsoren
Danke für das Bewerten dieses Vortrages

Weitere ähnliche Inhalte

Ähnlich wie FMK2018- FileMaker 17 Performance lab HOnza Koudelka

Ähnlich wie FMK2018- FileMaker 17 Performance lab HOnza Koudelka (20)

FMK2014 FileMaker Performance Under the Hood by Jon Thatcher
FMK2014 FileMaker Performance Under the Hood by Jon ThatcherFMK2014 FileMaker Performance Under the Hood by Jon Thatcher
FMK2014 FileMaker Performance Under the Hood by Jon Thatcher
 
Building reliable apps with cdk
Building reliable apps with cdkBuilding reliable apps with cdk
Building reliable apps with cdk
 
2020 and Beyond: Navigating Claris Transformations & Innovations Post-Pandemic
2020 and Beyond: Navigating Claris Transformations & Innovations Post-Pandemic2020 and Beyond: Navigating Claris Transformations & Innovations Post-Pandemic
2020 and Beyond: Navigating Claris Transformations & Innovations Post-Pandemic
 
DITA for Small Teams Workshop (Tekom 2017)
DITA for Small Teams Workshop (Tekom 2017)DITA for Small Teams Workshop (Tekom 2017)
DITA for Small Teams Workshop (Tekom 2017)
 
SAP Integration with MuleSoft | MuleSoft Mysore Meetup #14
SAP Integration with MuleSoft | MuleSoft Mysore Meetup #14 SAP Integration with MuleSoft | MuleSoft Mysore Meetup #14
SAP Integration with MuleSoft | MuleSoft Mysore Meetup #14
 
Ruby in office time reboot
Ruby in office time rebootRuby in office time reboot
Ruby in office time reboot
 
Apache Iceberg - A Table Format for Hige Analytic Datasets
Apache Iceberg - A Table Format for Hige Analytic DatasetsApache Iceberg - A Table Format for Hige Analytic Datasets
Apache Iceberg - A Table Format for Hige Analytic Datasets
 
HDF Status and Development
HDF Status and DevelopmentHDF Status and Development
HDF Status and Development
 
FOSSology & GSOC Journey
FOSSology & GSOC JourneyFOSSology & GSOC Journey
FOSSology & GSOC Journey
 
DPDK FPGA with Atomic Rules Arkville
DPDK FPGA with Atomic Rules ArkvilleDPDK FPGA with Atomic Rules Arkville
DPDK FPGA with Atomic Rules Arkville
 
You Were Lied To About Optimization
You Were Lied To About OptimizationYou Were Lied To About Optimization
You Were Lied To About Optimization
 
INTER-Mediator 5.7とFileMaker Data API (Trial)
INTER-Mediator 5.7とFileMaker Data API (Trial)INTER-Mediator 5.7とFileMaker Data API (Trial)
INTER-Mediator 5.7とFileMaker Data API (Trial)
 
SDL's Vision for Globalization - Maxwell Hoffman at SDL Connect 16
SDL's Vision for Globalization - Maxwell Hoffman at SDL Connect 16SDL's Vision for Globalization - Maxwell Hoffman at SDL Connect 16
SDL's Vision for Globalization - Maxwell Hoffman at SDL Connect 16
 
Publishing API documentation -- Workshop
Publishing API documentation -- WorkshopPublishing API documentation -- Workshop
Publishing API documentation -- Workshop
 
FMK2017 - Tableau and FileMaker by Vince Menanno
FMK2017 - Tableau and FileMaker by Vince MenannoFMK2017 - Tableau and FileMaker by Vince Menanno
FMK2017 - Tableau and FileMaker by Vince Menanno
 
fmcsadmin CLI for FileMaker Admin API (Trial)
fmcsadmin CLI for FileMaker Admin API (Trial)fmcsadmin CLI for FileMaker Admin API (Trial)
fmcsadmin CLI for FileMaker Admin API (Trial)
 
New Process/Thread Runtime
New Process/Thread Runtime	New Process/Thread Runtime
New Process/Thread Runtime
 
FMK2017 - Modularity in FileMaker 16 by Russell Watson
FMK2017 - Modularity in FileMaker 16 by Russell WatsonFMK2017 - Modularity in FileMaker 16 by Russell Watson
FMK2017 - Modularity in FileMaker 16 by Russell Watson
 
Introducing Alfred Desktop 3.6
Introducing Alfred Desktop 3.6 Introducing Alfred Desktop 3.6
Introducing Alfred Desktop 3.6
 
OSMC 2021 | Handling 250K flows per second with OpenNMS: a case study
OSMC 2021 | Handling 250K flows per second with OpenNMS: a case studyOSMC 2021 | Handling 250K flows per second with OpenNMS: a case study
OSMC 2021 | Handling 250K flows per second with OpenNMS: a case study
 

Mehr von Verein FM Konferenz

Mehr von Verein FM Konferenz (20)

FMK2022 Excel und FileMaker Schittko.pdf
FMK2022 Excel und FileMaker Schittko.pdfFMK2022 Excel und FileMaker Schittko.pdf
FMK2022 Excel und FileMaker Schittko.pdf
 
FMK2022 Drucken über Dateigrenzen hinweg von Philipp Puls
FMK2022 Drucken über Dateigrenzen hinweg von Philipp PulsFMK2022 Drucken über Dateigrenzen hinweg von Philipp Puls
FMK2022 Drucken über Dateigrenzen hinweg von Philipp Puls
 
FMK2022 Custom Functions von Philipp Puls
FMK2022 Custom Functions von Philipp PulsFMK2022 Custom Functions von Philipp Puls
FMK2022 Custom Functions von Philipp Puls
 
FMK2022 FileMaker Fehler von Martin Schwarz
FMK2022 FileMaker Fehler von Martin SchwarzFMK2022 FileMaker Fehler von Martin Schwarz
FMK2022 FileMaker Fehler von Martin Schwarz
 
FMK2022 FileMaker Server unter Linux Workshop von Bernhard Schulz
FMK2022 FileMaker Server unter Linux Workshop von Bernhard SchulzFMK2022 FileMaker Server unter Linux Workshop von Bernhard Schulz
FMK2022 FileMaker Server unter Linux Workshop von Bernhard Schulz
 
FMK2022 FileMaker DataAPI und Java von Bernhard Schulz
FMK2022 FileMaker DataAPI und Java von Bernhard SchulzFMK2022 FileMaker DataAPI und Java von Bernhard Schulz
FMK2022 FileMaker DataAPI und Java von Bernhard Schulz
 
FMK2022 Neue Programmiertechniken von Adam Augusting
FMK2022 Neue Programmiertechniken von Adam AugustingFMK2022 Neue Programmiertechniken von Adam Augusting
FMK2022 Neue Programmiertechniken von Adam Augusting
 
FMK2022 FileMaker und Javascript von Adam Augustin
FMK2022 FileMaker und Javascript von Adam AugustinFMK2022 FileMaker und Javascript von Adam Augustin
FMK2022 FileMaker und Javascript von Adam Augustin
 
FMK2022 Arbeiten mit SVG in FileMaker - Robert Kaiser
FMK2022 Arbeiten mit SVG in FileMaker - Robert KaiserFMK2022 Arbeiten mit SVG in FileMaker - Robert Kaiser
FMK2022 Arbeiten mit SVG in FileMaker - Robert Kaiser
 
FMK2022 Dokumentation - Thomas Hirt
FMK2022 Dokumentation - Thomas HirtFMK2022 Dokumentation - Thomas Hirt
FMK2022 Dokumentation - Thomas Hirt
 
FMK2022 CustomFunctions Fuer Einsteiger - Thomas Hirt
FMK2022 CustomFunctions Fuer Einsteiger - Thomas HirtFMK2022 CustomFunctions Fuer Einsteiger - Thomas Hirt
FMK2022 CustomFunctions Fuer Einsteiger - Thomas Hirt
 
FMK2022 FileMaker Integrated Development Environment - Russell Watson
FMK2022 FileMaker Integrated Development Environment - Russell WatsonFMK2022 FileMaker Integrated Development Environment - Russell Watson
FMK2022 FileMaker Integrated Development Environment - Russell Watson
 
FMK2022 Datenschutz DSGVO Christoph Kluss
FMK2022 Datenschutz DSGVO Christoph KlussFMK2022 Datenschutz DSGVO Christoph Kluss
FMK2022 Datenschutz DSGVO Christoph Kluss
 
FMK2022 Rechnungen Inkasso - Christoph Kluss
FMK2022 Rechnungen Inkasso - Christoph KlussFMK2022 Rechnungen Inkasso - Christoph Kluss
FMK2022 Rechnungen Inkasso - Christoph Kluss
 
FMK2022 Die Zukunft von FileMaker - Marcel Moré.pdf
FMK2022 Die Zukunft von FileMaker - Marcel Moré.pdfFMK2022 Die Zukunft von FileMaker - Marcel Moré.pdf
FMK2022 Die Zukunft von FileMaker - Marcel Moré.pdf
 
FMK2019 bug off lightning talk by Russell Watson
FMK2019 bug off lightning talk by Russell WatsonFMK2019 bug off lightning talk by Russell Watson
FMK2019 bug off lightning talk by Russell Watson
 
FMK2019 being an optimist in a pessimistic world by vincenzo menanno
FMK2019 being an optimist in a pessimistic world by vincenzo menannoFMK2019 being an optimist in a pessimistic world by vincenzo menanno
FMK2019 being an optimist in a pessimistic world by vincenzo menanno
 
FMK2019 Hardware Integrated by HOnza Koudelka
FMK2019 Hardware Integrated by HOnza KoudelkaFMK2019 Hardware Integrated by HOnza Koudelka
FMK2019 Hardware Integrated by HOnza Koudelka
 
Fmk2019 Produktentwicklung mit FileMaker by Harald Mair
Fmk2019 Produktentwicklung mit FileMaker by Harald MairFmk2019 Produktentwicklung mit FileMaker by Harald Mair
Fmk2019 Produktentwicklung mit FileMaker by Harald Mair
 
FMK2019 FileMaker Data API mit Node.js nutzen by Adam Augustin
FMK2019 FileMaker Data API mit Node.js nutzen by Adam AugustinFMK2019 FileMaker Data API mit Node.js nutzen by Adam Augustin
FMK2019 FileMaker Data API mit Node.js nutzen by Adam Augustin
 

Kürzlich hochgeladen

Salient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functionsSalient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functions
KarakKing
 

Kürzlich hochgeladen (20)

REMIFENTANIL: An Ultra short acting opioid.pptx
REMIFENTANIL: An Ultra short acting opioid.pptxREMIFENTANIL: An Ultra short acting opioid.pptx
REMIFENTANIL: An Ultra short acting opioid.pptx
 
This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.
 
ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.
 
Wellbeing inclusion and digital dystopias.pptx
Wellbeing inclusion and digital dystopias.pptxWellbeing inclusion and digital dystopias.pptx
Wellbeing inclusion and digital dystopias.pptx
 
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
 
Python Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docxPython Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docx
 
Holdier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfHoldier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdf
 
Interdisciplinary_Insights_Data_Collection_Methods.pptx
Interdisciplinary_Insights_Data_Collection_Methods.pptxInterdisciplinary_Insights_Data_Collection_Methods.pptx
Interdisciplinary_Insights_Data_Collection_Methods.pptx
 
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdfUGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
 
How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17
 
Google Gemini An AI Revolution in Education.pptx
Google Gemini An AI Revolution in Education.pptxGoogle Gemini An AI Revolution in Education.pptx
Google Gemini An AI Revolution in Education.pptx
 
Single or Multiple melodic lines structure
Single or Multiple melodic lines structureSingle or Multiple melodic lines structure
Single or Multiple melodic lines structure
 
Jamworks pilot and AI at Jisc (20/03/2024)
Jamworks pilot and AI at Jisc (20/03/2024)Jamworks pilot and AI at Jisc (20/03/2024)
Jamworks pilot and AI at Jisc (20/03/2024)
 
How to setup Pycharm environment for Odoo 17.pptx
How to setup Pycharm environment for Odoo 17.pptxHow to setup Pycharm environment for Odoo 17.pptx
How to setup Pycharm environment for Odoo 17.pptx
 
Application orientated numerical on hev.ppt
Application orientated numerical on hev.pptApplication orientated numerical on hev.ppt
Application orientated numerical on hev.ppt
 
On National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan FellowsOn National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan Fellows
 
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...
 
Salient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functionsSalient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functions
 
FSB Advising Checklist - Orientation 2024
FSB Advising Checklist - Orientation 2024FSB Advising Checklist - Orientation 2024
FSB Advising Checklist - Orientation 2024
 
On_Translating_a_Tamil_Poem_by_A_K_Ramanujan.pptx
On_Translating_a_Tamil_Poem_by_A_K_Ramanujan.pptxOn_Translating_a_Tamil_Poem_by_A_K_Ramanujan.pptx
On_Translating_a_Tamil_Poem_by_A_K_Ramanujan.pptx
 

FMK2018- FileMaker 17 Performance lab HOnza Koudelka

  • 1. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 www.filemaker-konferenz.com Performance Questions & Test Results HOnza Koudelka FileMaker 17 Performance Lab
  • 2. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka HOnza Koudelka • Co-founder and co-owner of 24U Software, FBA Platinum Member • Developing FileMaker solutions since 1991 • FileMaker 8, 10, 11, 12, 13, 14, 15, 16, and 17 Certified Developer • Leading team of 5 other certified developers • Winner of the FileMaker DevCon 2015 Developer Cup • FileMaker Mad Dog Award 2011 winner • Mad Optimizer and achiever of the impossible… • Vendor session speaker at FileMaker DevCon, spoke at Pause[x]London and Pause[x]Berlin, and remotely at PauseOnError Portland • FileMaker Konferenz 2016 & 2017 speaker
  • 3. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Agenda • FileMaker 17 Automated Test Results • Recent Discoveries • Benchmarking Techniques • Optimization Techniques • Questions & Answers
  • 4. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Why Performance Lab? • Perceived speed defines what’s important • Technical speed makes things possible
  • 5. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Faster is not always better
  • 6. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Test Equipment • Mac Pro (early 2008) • 2 x 2,8 GHz Intel Xeon • 8 GB RAM • Separate hard drive for data • macOS 10.13 High Sierra • FileMaker Server versions 15, 16, 17 • FileMaker Pro Advanced 12, 13, 14, 15, 16, 17
  • 7. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Automated tests performed • Export & Import Records as tab delimited text • Creating records with a lot of text • Sort Records by indexed/unindexed field • Perform Find • indexed vs unindexed field • small vs large result found set • number vs text • unique vs common values • Position vs PatternCount • Replace Field Contents vs Looped Set Field • Summary fields vs Aggregate functions vs ExecuteSQL • Delete All Records, Truncate Table, Delete All Found Records (leaving one record) 159 858 tests
  • 8. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Manually tested • Spider vs Anchor/Buoy vs Selector-Connector • Container vs text • Structure impact on Set Field performance • Slow network impact • Layout rendering • Conditional formatting • Relationship sorting • Data API vs PHP API NEW
  • 9. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka What was NOT tested • Multiple users • Multiple concurrent tasks • Working with container fields • Exact amounts of data transferred between client and server • FileMaker Go • FileMaker WebDirect • FileMaker Cloud • XML / PHP / ODBC / JDBC connections • Two-machine deployment • FileMaker Server with enabled SSL (except for Data API vs PHP API) • Server-side schedules, including backup schedules • Different cache sizes and other configuration differences
  • 10. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka FileMaker 17 Test Results 12 13 14 15 16 ? ?
  • 11. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Sorting records
  • 12. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Performing Find in a simple table
  • 13. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Batch-modifying records
  • 14. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Batch-modifying records
  • 15. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Batch-modifying records
  • 16. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Batch-modifying records
  • 17. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka FMSE shares resources with FMS Indexed Unindexed
  • 18. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Recent Discoveries • Spider vs Anchor/Buoy vs Selector-Connector • Container vs text (danger of Base64) • Structure impact on Set Field performance • Slow network impact • Layout rendering • Expensive objects • Conditional formatting • Relationship sorting • Data API vs PHP API
  • 19. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Spider vs Anchor/Buoy vs Selector-Connector
  • 20. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Under the Hood: Opening a File • Seven-step opening process • Step 3: Create or reuse temp file (no reuse for Perform Script On Server) • Step 5: DBEngine processing • List of tables • Relationships • Master map of all table occurrences • Step 6: FMEngine processing • Window • Layout, Value lists, Font mappings, Custom menus • Script triggers
  • 21. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Why is this important? • User opens database only once or twice per day • Every CWP session opens a file • Every server-side script creates a new client session • Every Perform Script On Server creates a new client session • Perform Script On Server can be run asynchronously (without waiting) • One user can start multiple server-side scripts within a single second 1 second to start a script = TOO SLOW How long does your solution take to open?
  • 22. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Real solution test
  • 23. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Conversion to Anchor/Buoy Before: • 2359 total table occurrences • 799 table occurrences in largest TOG • 13 relationships longest path between TOs After: • Largest TOG split to 21 smaller TOGs • 2349 total table occurrences • 282 table occurrences in largest TOG • 9 relationships longest path between TOs
  • 24. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka After conversion to Anchor/Buoy
  • 25. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka After adding Selector-Connector
  • 26. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Time to Perform Script on Server Spider Anchor/Buoy Selector Connector
  • 27. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Beware Base64 • Real experience from a customer • Huge containers can be stored as text • Doing so can have fatal impact on performance
  • 28. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Insanely slow Set Field • Posted in FileMaker Community • Blank layout • Isolated table occurrence • No records in any table • Open locally in FileMaker Pro Advanced • Creating 100 records in a loop takes… 30 seconds
  • 29. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Insanely slow Set Field
  • 30. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Insanely slow Set Field • 1037 relationships • 1004 in this TOG • 690 around this TO • 7 hops longest path
  • 31. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Insanely slow Set Field
  • 32. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Insanely slow Set Field
  • 33. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Insanely slow Set Field
  • 34. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Insanely slow Set Field
  • 35. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Insanely slow Set Field 1037 1116 1194 7516 9701 Total number of relationships
  • 36. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Insanely slow Set Field • large number of relationships all depend on the contents of one field • FileMaker looks for all the possible combinations of relationships that can be invalidated because that field changes • That information is not in the join graph but in the field dependencies stored as part of the field definitions. • Roughly 27,000 possible joins that could be affected • Higher level view code looks at all affected TOs and checks to see if any base tables of those TOs are currently in any window and if there are any portals • => Potential for optimization in future versions • Thanks to Clay Maeckel for this under-the-hood info
  • 37. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Slow network impact
  • 38. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Notifications are sent… • from server to client as part of reply to next client’s request • whenever a change is committed • to every client having the file open (even hidden) • about every record (unless entire table is changed) • in about 32K chunks • without actual record data
  • 39. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Top Factors • Bandwidth - amount of data transferred • Latency - number of calls • Packet Loss / Stability - persistency, online vs synchronization • Examine with Network Link Conditioner & Top Call Stats
  • 40. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Things to avoid with connected users • Modifying huge amounts of records (in open files) • Changing data in records containing keys for portals • Changing relationship graph (in any file)
  • 41. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Recent optimization - 24U Collector
  • 42. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Recent optimization - 24U Collector
  • 43. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Layout rendering
  • 44. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Layout rendering
  • 45. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Layout rendering
  • 46. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Layout rendering • Toolbox_GetTimestamp • Benchmarks in global variable • OnTimer script trigger
  • 47. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Layout rendering • 8 conditional formatting rules • 31 columns • 29 records • 8 x 31 x 29 = 7192 • Little chance to optimize time per calc, it is necessary to optimize their count • Almost 7 seconds before starting to evaluate conditional formatting due to button bars & popovers
  • 48. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Layout rendering
  • 49. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Layout rendering • Repeating text field replaced button bar (86.8 % saved) • TextColor replaced conditional formatting • Optimized condition calculation
  • 50. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Data API vs PHP API • PHP API is based on Tomcat • Data API is based on Node.js • Data API is supposed to be faster and more stable • PHP API is deprecated and disabled by default • Data API requires HTTPS only, PHP API allows HTTP
  • 51. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Data API vs PHP API
  • 52. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Data API vs PHP API
  • 53. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Data API vs PHP API
  • 54. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka WPE after trying to fetch 300k records
  • 55. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Benchmarking Techniques • Scripts • 24U FM Bench • Get ( CurrentTimeUTCMilliseconds ) • Calculations • 24U FM Bench • Toolbox_GetTimestamp (microseconds) • Layouts & other • Unstored calculations + OnTimer script trigger • Binary Splitting • Top Call Stats • Network Link Conditioner
  • 56. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Top Optimization Techniques • Remove it if you don’t need it • Script layouts • Virtual List • Perform Script On Server (or server-side queue) • Pre-calculated summaries • Simpler relationship graph • Calculated text color instead of conditional formatting • Card window instead of popover • Avoid too many button bars • Sort portal instead of relationship • New table with fewer fields • Conditional Set Field
  • 57. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka More resources • FileMaker Community > Discussions > Performance • FileMaker DevCon Session Recordings (available on YouTube) • Performance related sessions • Under the Hood sessions • FM Academy & Skeleton Key webinars (FMAcademy.com) • “Designing for WAN Performance” • FileMaker Optimizers LinkedIn Group (FMOptimizers.com) • 24U FM Bench (FMBench.com) • Big-O Cheat Sheet (bigocheatsheet.com) • A Gentle Introduction to Algorithm Complexity Analysis (discrete.gr/complexity/) • Enabling HTTPS Without Sacrificing Your Web Performance by Billy Hoffmann (https://zoompf.com/blog/2014/12/optimizing-tls-handshake/) • Ask for consultation at honza@24uSoftware.com or 24usw.com/consult
  • 58. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Vielen Dank unseren Sponsoren Danke für das Bewerten dieses Vortrages