Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

FMK2018- FileMaker 17 Performance lab HOnza Koudelka

66 views

Published on

With more tests performed and more results compared than ever before, for the third time in a row, HOnza is going to reveal the raw facts of the FileMaker 17 performance, compared to the previous versions, as well as fresh performance comparison of different development techniques. Even though presented in English, this session is more about numbers than about language. Make the first step to having your apps perform fast by knowing what will make them fast and what will make them slow.

Published in: Education
  • Be the first to comment

  • Be the first to like this

FMK2018- FileMaker 17 Performance lab HOnza Koudelka

  1. 1. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 www.filemaker-konferenz.com Performance Questions & Test Results HOnza Koudelka FileMaker 17 Performance Lab
  2. 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. 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. 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. 5. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Faster is not always better
  6. 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. 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. 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. 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. 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. 11. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Sorting records
  12. 12. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Performing Find in a simple table
  13. 13. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Batch-modifying records
  14. 14. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Batch-modifying records
  15. 15. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Batch-modifying records
  16. 16. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Batch-modifying records
  17. 17. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka FMSE shares resources with FMS Indexed Unindexed
  18. 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. 19. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Spider vs Anchor/Buoy vs Selector-Connector
  20. 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. 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. 22. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Real solution test
  23. 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. 24. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka After conversion to Anchor/Buoy
  25. 25. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka After adding Selector-Connector
  26. 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. 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. 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. 29. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Insanely slow Set Field
  30. 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. 31. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Insanely slow Set Field
  32. 32. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Insanely slow Set Field
  33. 33. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Insanely slow Set Field
  34. 34. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Insanely slow Set Field
  35. 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. 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. 37. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Slow network impact
  38. 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. 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. 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. 41. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Recent optimization - 24U Collector
  42. 42. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Recent optimization - 24U Collector
  43. 43. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Layout rendering
  44. 44. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Layout rendering
  45. 45. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Layout rendering
  46. 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. 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. 48. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Layout rendering
  49. 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. 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. 51. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Data API vs PHP API
  52. 52. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Data API vs PHP API
  53. 53. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka Data API vs PHP API
  54. 54. 9. FileMaker Konferenz | Liechtenstein | 17.-20. Oktober 2018 FileMaker 17 Performance Lab | HOnza Koudelka WPE after trying to fetch 300k records
  55. 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. 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. 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. 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

×