Performance Overhead Of Using Power BI Custom Visuals

Following on from the series of posts I wrote last month (starting here) about testing the performance of Power BI reports in the browser, I would now like to highlight one possible cause of slow report rendering performance: the over-use of custom visuals. Before we go any further, though, let me be absolutely clear about something:

I am NOT saying that custom visuals are bad and that you should never use them. Custom visuals are an incredibly useful feature of Power BI and be used to solve a wide range of problems.

However if you are using an older browser to view reports, have a slow PC and/or have a slow network connection, then having a large number of custom visuals on the same page can be bad for performance. In fact having a large number of any kind of visual on the same report page can be bad for performance, as Mike Carlo shows here. Even so there is an extra performance overhead when you use a custom visual instead of one of the built-in visuals.

Take for example, the following report. The dataset it uses has one table with one column and one row containing the value 1, so retrieving data from it is going to be super-fast. This page has 26 Advance Card custom visuals on it displaying the value 1 from the dataset:

image

Using Chrome DevTools and the functionality on the Network tab to simulate a cold cache and a fast 3G network (as I show here), this page takes 45 seconds to render. Another page on the same report has 26 instances of the built-in card visual to show the same data:

image

Under the same simulated network conditions, Chrome DevTools shows this page takes 25 seconds to render. So the version of the page with the custom visuals is 20 seconds slower to render than the version with the built-in visuals, although this is obviously an extreme example. Without the network throttling (but with the cold cache) the version with the Advance Card visuals loads in 8.5 seconds and the version with the built-in cards takes 5.5 seconds; still a noticeable difference but maybe not one that your users would complain about.

Let me be clear about something else here:

I am NOT saying that the Advance Card visual is badly implemented – it’s a great visual and one that is used by a lot of people without any problems. What I am saying is that any custom visual comes with some kind of performance overhead and the more custom visuals you use on a page, the more the overhead will be.

How much overhead there is will depend on a lot of different factors so you should test to see if there is any noticeable impact from using custom visuals in your own reports – it’s very likely that there won’t be one. I would go as far as saying that 99% of the time you won’t see any impact. What’s more, there are improvements being made to the Power BI Service all the time and it’s highly probable that some optimisations for the loading of custom visuals will be made in the future.

One last tip for you. If you have imported a custom visual in Power BI Desktop but are not using it, you should always delete it (as shown here). There is another, smaller overhead associated with even having a custom visual imported into a report – although, again, this may well change in the future.

6 responses

  1. Hi Chris, a couple of days after reading this post I came across a line in the Power BI Security Whitepaper “Power BI uses the geographically closest WFE to efficiently distribute the necessary static content and files to users, with the exception of custom visuals which are delivered using the Azure Content Delivery Network (CDN)”. It tempts me to think custom visuals are not intrinsically slower but extrinsically slower due to the way they are delivered. Should I resist this temptation or do you know if this is the reason? Regards, Geoffrey

  2. Pingback: Performance Overhead Of Using Power BI Custom Visuals | Pardaan.com

  3. Yes, some time back, embarrassingly, I had about 10 of the same custom visuals on a page to provide a particular solution to a client. To my horror in front of the client it took 9 seconds to render the page. I have never forgotten that. I did learn a lot of lessons about testing though! Sadly I’ve never used custom visuals since (other than the chiclet slicer!). But maybe things are better now and I should give them a go…

  4. Pingback: Chris Webb's BI Blog: Make Your Power BI Report Run Faster By Showing The Same Data In Fewer Visuals Chris Webb's BI Blog

Leave a Reply to Angus Cancel reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: