web
You’re offline. This is a read only version of the page.
close
Skip to main content

Announcements

News and Announcements icon
Community site session details

Community site session details

Session Id :
Power Platform Community / Forums / Power Apps / Performance when using...
Power Apps
Answered

Performance when using LookUp formula

(0) ShareShare
ReportReport
Posted on by 115

Dear community,

 

I was considering building a multilingual function in my app. For this, I would create an Excel Table with the "Keys" and the corresponding translation into 4 languages. Then I would remove all strings from my App and replace them with "LookUps".

 

Questions:

1- Will this amount of Look-Ups (sometimes 15-20 in a single screen) slow down my app?

2- If I use 4 languages and considering the annoying problem with delegation, I would only be able to save 500/4 = 125 terms for the whole app. How do I overcome this without slowing down the app?

 

I would appreciate your input. Thanks a lot.

 

Categories:
  • CNT Profile Picture
    10,921 Super User 2024 Season 1 on at

    @LeoGS 

    1. Based on who's logged-in, in the OnStart() of the App, load all the language text from your Excel file for that language into a collection.
    2. Do a LookUp into that collection where ever text is displayed.

    Hope this helps!

  • LeoGS Profile Picture
    115 on at

    Thanks again @CNT !

    Are there performance benchmarks correlating the speed of the app in function of the amount of formulas and the formula itself ?

  • Verified answer
    CNT Profile Picture
    10,921 Super User 2024 Season 1 on at

    @LeoGS That's a tough ask.

    It depends on various factors such as,

    1. Which datasource

    2. How many columns(fields)

    3. How many records etc.,

    One way to gain performance while loading non-dependant data is by using the Concurrent function. Hope this helps!

     

    Please remember to give a 👍 and accept the solution as it will help others in the future.

  • LeoGS Profile Picture
    115 on at

    Thanks @CNT , I will then check how much my performance is impaired.

  • CNT Profile Picture
    10,921 Super User 2024 Season 1 on at

    @LeoGS Glad to help!

  • LeoGS Profile Picture
    115 on at

    Hi @CNT ,
    one thing came to my mind yesterday evening and I would like to discuss it with you.
    Another possibility would be to hard code all strings and ask the app to select between them using "IF's".
    What is your opinion about this approach?

    Thanks!

  • CNT Profile Picture
    10,921 Super User 2024 Season 1 on at

    @LeoGS I wouldn't do that b'coz any small change/correction would mean that we have to open the App and change it and republish it.

    In an ALM situation where we have Dev, Testing & Prod Environments this is not ideal.

    Also, it's always been a general practice (in all platforms to keep language specific texts external to the program itself).

    The reason is that people who maintain these lists are linguist and not programmers!

  • LeoGS Profile Picture
    115 on at

    Perfect, thanks @CNT !

  • LeoGS Profile Picture
    115 on at

    Another question if I may (or should I open a new threat?) ?
    What has a better performance?
    a- Saving a collection into a Excel table in OneDrive.
    b- Saving the same collection into a Sharepoint list.

     

    Thanks!

  • jdarling20 Profile Picture
    41 on at

    One comment I'd like to add to improve performance is to opt for a LookUp within an AddColumns function which defines a collection rather than having a LookUp at a specific control. There is always a balance with this, but if you have a scenario where you are committing hundreds of lookups when you change a dropdown, or click on an item in a gallery, or potentially in your case where you are localizing your app to a specific language, you will see significant performance increase by lifting up the lookup function to a collection.

     

    For example, consider the following:

    GLOBAL_VARIABLE:
    g_selected_language_value = Text(5)
    
    GALLERY.Items:
    c_terminology
    
    LABEL_1.Text
    LookUp(c_language_translations, terminlogy_id.Value = Text(ThisItem.ID) && language = g_selected_language_value).Title

     

    In this scenario, you have a global variable which defines the language you are translating to, a collection of terminology, and a collection of translations which you are looking up against in a label in your gallery. If you only show a few items translated, this isn't too bad. But let's say instead that you are localizing your app, which every text control is doing a lookup to get a value. This will yield significant overhead on your app.

     

    You may instead be better off to do something like this:

    GLOBAL_VARIABLE:
    g_selected_language_value = Text(5)
    
    GALLERY.Items:
    AddColumns(c_terminology, "sLanguageTitle", LookUp(c_language_translations, terminlogy_id.Value = Text(c_terminology[@ID]) && language = g_selected_language_value).Title
    
    LABEL_1.Text
    ThisItem.sLanguageTitle

    What this achieves is lifting up the LookUp of data to the collection which drives your gallery (or your application), allowing all child controls to access the text they need without a LookUp. I have implemented this pattern in many applications and the performance improvement is incredible. You still need to commit the Lookup, but you only do it once and when the user would expect to have a delay (like when clicking a button).

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

Season of Sharing Community Challenge Winners!

Congratulations to our community stars!

Kudos to our 2025 Community Spotlight Honorees

Expanding mentorship, skilling, and AI innovation

Leaderboard > Power Apps

#1
11manish Profile Picture

11manish 360 Super User 2026 Season 2

#2
M Bilal Khan Profile Picture

M Bilal Khan 325

#3
Mohsin Ali Profile Picture

Mohsin Ali 232

Last 30 days Overall leaderboard