Timing the calendar

Note that the calendar has some instrumentation built in to help you measure speed and see if you're making things faster (or slower).

Run the script "Timer ON" and this will cause two dialogs to come up when the calendar is refreshed. One after the data is loaded, and another after the calendar is redrawn.

Times displayed here aren't much use on their own, but are great when comparing two versions of a script: 1) click refresh, 2) notice the times, 3) change your script, 4) refresh again and notice the times.

Times displayed here aren't much use on their own, but are great when comparing two versions of a script: 1) click refresh, 2) notice the times, 3) change your script, 4) refresh again and notice the times.

To time your own scripts check out the Timer comments in the script "Insert Events File Into Calendar" to see how we place these calls within a script we want to time.

Here are some tips for getting all the speed you can from the calendar...

Delete or rename any "Source No X" layouts you're not using. So if you're only using 1 source, delete the layout Source No 2 or edit the name by replacing "No" with "Was" as in "Source WAS 2".

Show only one source at a time. Anything that shows more records at the same time asks FMP to work harder.

Mapping the event summary to a multi-line calc can slow things down a bit, especially if the calc is unstored. Try using a regular text field (without carriage returns) for your summary instead. And the shorter the contents of this field, the better.

If you're frequently selecting multiple resource filters (or any other filter formatted as a checkbox) you'll see that we refresh the calendar after each selection. You can change this by editing the filter field in layout mode and moving the script trigger from OnObjectModify to OnObjectExit. You'll now need to press "enter" (or click out of the field) after selecting your filter items so you may want to add a small note to that effect below the filter fields in question. (note that OnObjectExit is now the default as of version 7.25)

Make sure the fields you're mapping to on the "Source No X" layouts are indexed.

Speed up the launch by Editing the "Upon Opening" script and disabling the perform of the subscript "Splash". If you're not going to be moving the solution around to different machines / users, you can disable a few routines in the Upon Opening routine to speed things up a little. Disable the steps in Upon Opening that follow these comments:

Check FileMaker Version
Write test -- is file editable?

You may want to show only All Day events on the month view (since that view has the potential to show the most records, it is potentially the slowest as well). You can restrict the month view in this way pretty easily:

Edit the script "Write FileMaker Source to Variable" and find the comment "Nothing Found?".
Right *before* that comment add the following:
If [ $$sc_Mode = "Month" ]
Enter Find Mode [ ]
Go to Object [ Object Name: "SourceTimeStart" ]
Insert Calculated Result [ "*" ]
[ Select ]
Omit Record Constrain Found Set [ ]
End If
#Nothing found?
That will leave only the all day events.

If your server is not on the same physical network as your FileMaker client, there could be an undue amount of latency between them slowing things down. Ping your FileMaker Server to check this: the results really depend on what kinds of speed you can tolerate, but we you'll likely be happy with pings under 50-70ms. Anything above that and you may want to start asking some of the FileMaker Server hosting providers for test pings to their servers to see if they'd be faster than what you have.

The "simple" views for Day and Week are somewhat faster. Select these on the Settings tab in the calendar sidebar. More here: Simple Views.

If you're entering a lot of events at the same time, you may not want the calendar to refresh after each event is entered. To achieve this simply close the Event Detail window after you've edited the event: the event will still be committed to FileMaker, but since the calendar hasn't refreshed the event won't show up and you can quickly create the next one. Almost any subsequent action will refresh the calendar (switching days, views, etc) and you can always refresh it manually.

Finally, the calendar works harder when it has more work to do, so filtering or pre-filtering to show only the relevant records can speed things up a lot. More on filtering here.

Follow us: