Skip to content
Tips for faster sce...
 
Notifications
Clear all

Tips for faster scenario execution

17 Posts
5 Users
0 Reactions
8 Views
Dmitri_Martin
(@dmitri_martin)
Posts: 7
Active Member
Topic starter
 

I'm seeking advice on optimizing scenario execution speed. This thread could serve as a central hub for various techniques to decrease execution time.

Specifically, I'm interested in minimizing the time taken for searching Google Sheet rows and making HTTP requests to custom webhook scenarios.

Regarding Google Sheets, I'm curious about the impact of broad column ranges like A-Z on performance. What about columns that contain data but aren't utilized by the scenario? Or entire sheets within the workbook that are inactive? How do settings such as Field Type, Value render option, and Maximum returned rows play a role? Would transitioning to a different spreadsheet or database offer any speed improvements?

Concerning HTTP requests, if data is exclusively sent via the Query String, does the "Request compressed content" setting influence execution speed?

For custom webhooks, would sequential processing be more efficient than parallel processing, assuming that simultaneous execution requests are unlikely to occur within seconds of each other?

Finally, how does the "Commit trigger last" scenario setting affect execution time?

 
Posted : 23/09/2022 2:10 pm
alex.newpath
(@alex-newpath)
Posts: 53
Trusted Member
 

These are all questions primarily dependent on the Google API response.

You will need to experiment. Benchmarking has not been conducted yet.

However, the more critical question is: why is the duration significant? Do you have a time-sensitive automation? If so, nocode solutions will not be the most performant. Raw code will consistently be faster.

 
Posted : 23/09/2022 3:12 pm
Dmitri_Martin
(@dmitri_martin)
Posts: 7
Active Member
Topic starter
 

This is important because the webhook functions as a form handler. Once a user submits the form, they must wait for the webhook's execution to complete before it can respond with a redirect to the correct webpage.

 
Posted : 23/09/2022 4:38 pm
zezutom
(@zezutom)
Posts: 1
New Member
 

I don’t think that callin.io is suited for near real-time operations. If you insist on using a no-code solution, you could try to integrate callin.io with other tools. For example, the Glide platform lets you build apps based on sheets. callin.io provides a connector (Glide Integration | Workflow Automation | Make). Please take this as an example; I have no ties to Glide, but you could use Glide to quickly build the front-end that saves data to a sheet (in real-time) and then use callin.io to perform an action in the background with the collected data.

 
Posted : 23/09/2022 6:32 pm
alex.newpath
(@alex-newpath)
Posts: 53
Trusted Member
 

You might consider delegating processing to a separate scenario using a webhook, and then relaying the response back. This is akin to parallel processing, but if you place the webhook response at the conclusion of a lengthy scenario, the user experience might not be optimal.

 
Posted : 23/09/2022 7:17 pm
alex.newpath
(@alex-newpath)
Posts: 53
Trusted Member
 

Another interesting approach, and more intensive TBH that effectively parallelizes work between 2 platforms effectively.

 
Posted : 23/09/2022 7:18 pm
loic.wiseflow
(@loic-wiseflow)
Posts: 12
Active Member
 

Hi,

Great topic!

Can you show us your current scenario with Google Sheets?

 
Posted : 23/09/2022 7:22 pm
Dmitri_Martin
(@dmitri_martin)
Posts: 7
Active Member
Topic starter
 

Excellent suggestion…thank you. I do that with a number of repetitive automations and I believe the referring scenario doesn’t wait for a webhook response if I don’t specify one within the webhook.

 
Posted : 23/09/2022 8:08 pm
Dmitri_Martin
(@dmitri_martin)
Posts: 7
Active Member
Topic starter
 

Here is one of many I’ve created:

 
Posted : 23/09/2022 8:09 pm
loic.wiseflow
(@loic-wiseflow)
Posts: 12
Active Member
 

If the items below (marked with red question marks) represent search steps, you could perform a single search that retrieves all rows and then create an array from that. This would eliminate the need for your second Sheets search. You can then use the map function to extract the data for each subscription.

This is a comparable setup to one I developed a few weeks ago. It reduced the runtime by 25 times.

 
Posted : 23/09/2022 8:32 pm
Dmitri_Martin
(@dmitri_martin)
Posts: 7
Active Member
Topic starter
 

Thanks for getting back to me. Could you tell me what the module on the left, labeled "Get all contractors," is called? I don't recognize that icon. Also, are you available for hire?

 
Posted : 18/10/2022 12:43 pm
Dmitri_Martin
(@dmitri_martin)
Posts: 7
Active Member
Topic starter
 

Thanks again. I’ve implemented your suggestions and identified several operations that can be executed via webhooks. These don't require return responses, allowing them to run in parallel without impacting the performance of their parent scenarios. I've also adjusted the order of some modules, placing any operations that don't need to complete before sending a redirect after that redirect has been sent.

Further performance improvements could likely be achieved by storing data in arrays rather than making multiple requests to Google Sheets.

However, I'm curious if utilizing data stores instead of Google Sheets would also boost speed. I've done some experimentation, but I'm encountering an issue because searching data stores doesn't return the count of found bundles, which is crucial in certain scenarios like the one depicted here:

callin.io support suggests using an aggregator to count the bundles. While this approach could work for the aforementioned situation, in other cases, I need to loop through the returned bundles.

Would data stores offer better performance? Additionally, is there an alternative method to determine the number of bundles returned?

 
Posted : 18/10/2022 1:13 pm
alex.newpath
(@alex-newpath)
Posts: 53
Trusted Member
 

Yes, absolutely. Data stores are significantly faster because they function as a native object.

Regarding the bundles returned, could you please provide an example output from a search data store? I believe

:thinking:

 
Posted : 18/10/2022 1:20 pm
Dmitri_Martin
(@dmitri_martin)
Posts: 7
Active Member
Topic starter
 

Certainly.

I've set up a straightforward test scenario. Here's what can be selected in another module or filter within an iteration of the results:

Screenshot (5).png

And here is the output from the search itself:

Screenshot 2022-10-18 083952.jpg

Alternatively, presented in JSON format:

json
[
{
"key": "thesignpolice@gmail.com",
"data": {
"Email": "fsbobacker@gmail.com",
"First Name": "Vacant",
"Full Rec": false,
"Sandy": false,
"With Bar": false,
"Clear": false,
"Large": false,
"Shore": false,
"Deep": false,
"Nearest Shopping": "N/A",
"Max Shopping Distance": 100,
"Property Type": "Vacant Land",
"Max Price": 10000000,
"Min Beds": 0,
"Min Baths": 0,
"DateSubscribed": "2022-10-13T20:44:00.000Z",
"NumAlerts": null,
"NumListings": null
}
},
{
"key": "fsbobacker@gmail.com",
"data": {
"Email": "thesignpolice@gmail.com",
"First Name": "Home",
"Full Rec": false,
"With Bar": false,
"Clear": false,
"Large": false,
"Shore": false,
"Deep": false,
"Nearest Shopping": "N/A",
"Max Shopping Distance": 100,
"Property Type": "Home",
"Max Price": 10000000,
"Min Beds": 0,
"Min Baths": 0,
"DateSubscribed": "2022-10-13T20:40:00.000Z",
"NumAlerts": null,
"NumListings": null,
"Sandy": false
}
}
]

 
Posted : 18/10/2022 1:43 pm
loic.wiseflow
(@loic-wiseflow)
Posts: 12
Active Member
 

Hi,

Yes, I offer professional callin.io services. Please send me a direct message if you'd like to learn more.

Thank you

 
Posted : 18/10/2022 3:13 pm
Page 1 / 2
Share: