At last week's SharePoint conference in Las Vegas, Rick Severson, a test lead on the InfoPath product team presented a session called Performance Best Practices for SharePoint Forms Services 2010. This session covered best practices and performance improvements in InfoPath 2010. In this post, we will cover the highlights from this session.
InfoPath Team Members who attended SPC:
(From Back Row Left to Right: Daniel Witriol (Program Manager Lead), Darvish Shadravan (Technology Specialist), Rick Severson (Test Lead), Nick Dallett (Program Manager Lead), Roberto Taboada (Program Manager), Bojana Duke (Program Manager), Peter Allenspach (Group Program Manager), Umut Alev (Development Lead))
We had about 100 people in the room for this deep dive of InfoPath performance best practices. Rick opened the session by defining what fast forms are. He used a sample 1040EZ form to demonstrate a "lightning fast form" out of the box. In InfoPath Forms Services 2010, we've improved performance by achieving initial form load times of .8 seconds and subsequent form loads of .4 seconds. A sample passport form with 60 controls and some simple rules and data validation was used to demonstrate that requests per second (RPS) have increased. With this form, 1200 requests can be processed per second. That's a total of 2.1 million users per hour.
Rick then moved on to cover some of the scalability highlights in this release.
- Requests per second (RPS) have doubled.
- We can now scale out to 8 Web front ends for a single backend.
- Performance of SharePoint lists that have been customized using InfoPath is comparable to the default, out of the box SharePoint lists.
- Forms with Sandboxed code can process 340 RPS in a 1x3 topology
- Our new State Service allows for better scaling and faster session performance
- We’ve ported many fixes into 2007 SP2 so you can take advantage of many of these performance gains today
Performance improvements include -
- Our new, enhanced rich text control which is optimized for multiple instances on a form
- OnHover rendering of secondary data which improves rendering time
- Performance in customized SharePoint lists ensures that you get the richness of InfoPath without sacrificing performance
- New State Service
- Optimized .js for Ajax behavior rendering
In the next part of the session, Rick covered some best practices for optimizing the performance of your forms. He focused on the following 4 areas - Data Connections, Controls, Data size and business logic.
- For optimal performance, he recommended that you filter data at source rather than returning large data sets when querying data sources.
- InfoPath 2010 users can now take advantage of our new browser form filtering capabilities.
- Users should avoid running data queries on form load and instead run them on demand.
- It's a good practice to combine data queries with other actions, such as view switches to minimize the number of postbacks.
- To further improve performance, we recommend that you reduce form complexity, avoid out of context controls and avoid postbacks.
- When possible, you should take advantage of first request optimized forms. You can do this by avoiding logic in your form that has to be calculated on load. For example, if you use a default value of DateTime.Now(), then this has to be calculated on load so the form cannot be first request optimized.
The key takeaways from this session were high performance out of the box, complex solutions can be tuned easily and performance matters!
Additional Resources for improving the performance of your InfoPath forms:
Designing Browser enabled forms for Performance in InfoPath Forms Services
Capacity Planning Document For IPFS
InfoPath Forms Services 2007 Web Testing Toolkit