Outside of the if your function is called every time the filter is run. The filter is run every time any query is made, including the queries ACF does to get the field. Inside it’s only run when $query->is_main_query() is true, which can only happen once per page load.
Welcome to the Advanced Custom Fields community forum.
Browse through ideas, snippets of code, questions and answers between fellow ACF users