Why is Revit so slow?
Working with large Revit models is usually quite painful. Many operations take a long time to complete; one may need a powerful processor and large enough memory. But the question is, why is Revit so slow? Let's look at what Autodesk says and what they do not tell about it.
What are the users saying?
We at Archi are very concerned about producing Revit plugins that can increase the user's productivity. That means we try to identify tasks that be done with fewer clicks or functions that can be nearly fully automated. Time is the most valuable asset, and we do not want to waste it. We want to invest in it.
If we take a search for the word slow in the Revit Architecture forum, we currently get over 1000 results. The users complain about slow printing, slow switching between views, slow 3D views, slow families, slow exporting of IFCs, etc, etc. It seems that many users experience issues with their hardware but also experience issues related to the way Revit software is built.
How was Revit built?
In 1997 a team of C++ engineers hired by Charles River Software and founded by Atlas Venture and North Venture Partners started to work on the software development of what was known as Revit. Before the release of the first version in 2000 under Revit Technology Corporation, a few relevant names joined the board, including Jon Hirschtick, founder of Solidworks, and Arol Wolford, founder of CMD group.
The main goals of the software were:
- Make it the first true parametric building modeler.
- Think like an architect.
- Easy to use.
- Make changes in any view.
Revit is a combination of Revise-Instantly, due to the interconnection between geometry and documentation.
By January 2002, Revit was already on version 4.1. The Revit Structure and Revit MEP were released in 2005 and 2006 when the company was already a part of Autodesk.
With the expansion of the Revit market from architecture to AEC and the added functionalities and add-ons developed by Autodesk, the number of possible tasks that can run natively in Revit has grown, and so have the line of code that serves Revit.
Revit became software with many features or functionalities, but the code also grew equally much. Its success is reflected in the dominance of the AEC market, but the downside is that some of its functions are slow.
Common problems and warning signs
Performance and memory problems in Revit can be identified based on two factors:
- Certain types of common problems at onset of the problems
- Warning Signs prior to onset of performance problems
Lets us than look in detail what are the common problems identified by Autodesk:
- Slow completing of tasks
- Slower than typical work on a large project
- Long "click and release" time
- Slow Pan and Zoom speed
- Tasks or tools not completing at all
The second aspect are the following warning signs that can contribute to the issues indicated above:
- Large ammounts of unresolved warnings
- Computer startup slowdowns
- Long pauses when modifying geometry
Whats the difference between performance and memory problems?
A performance problem in Revit usually translates into a significant slower than normal task completion. The user usually expresses the need to get the task done faster. A good example of a performance issue is exporting DWG or printing task.
In the other hand a memory problem translates into tasks that do not complete at all or crash. It is however important to point out that it does not necessarily mean that all tasks that hang Revit or make or computer crash are due to memory issues, since other problems can also cause the same effect.
What does Autodesk say about the slow performance of Revit?
In the Autodesk knowledge network, one can find this page about that. The leading causes for slow performance are both internal and external. The internal reasons are:
- The Revit software itself.
- Its supporting applications.
- Third-party applications.
But externally, the aspects are the hardware:
- graphics card
- storage media
Interestingly, the document does not mention the cause of the model's complexity, the number of users that exchange information to the central model causing delays to other users, or the internet connection's speed when using models on the cloud or Revit servers over the internet. It is however known that too many relationship constrains do affect the performance of Revit.
What hardware does Autodesk recommend for Revit 2023?
Autodesk has a triple recommendation for hardware depending on the model complexity. Generally, larger models require a more capable GPU, faster storage, and a more considerable amount of memory. The most capable configuration requires an i-series or Xeon processor from Intel or Ryzen processors from AMD. The GPU shall, at minimum, support 1920x11200 pixels up to 4K, with 4Gbytes memory. The storage shall be a 10k rpm Hard Drive or Solid State. This system shall have 32Gbytes memory and run on 64-bit Windows 10 or 11.
How much memory does Revit need?
According to Autodesk, Revit expands into memory the documents to 20x the size of the file. It is therefore important to consider the content of your projects and document sizes, including links, in relation to the installed memory.
Which Revit tasks make use of multiple cores?
Executing multi-threading code allows the distribution of tasks to all available cores, reducing the waiting time for the user. This speed optimization takes advantage of the most powerful CPUs. However, more elaborate coding techniques are required to ensure synchronization between code tasks and data integrity.
In Revit 2018 the following tasks were already developed for multiple cores:
- Vector printing
- Vector Export such as DWG and DWF
- Autodesk Raytracer.
- Wall join representation in plan and section views
- Loading elements into memory. This reduces view open times when elements display for the first time in a session.
- Parallel computation of silhouette edges (outlines of a curved surfaces) used when navigating perspective 3D views
- Translation of high-level graphical representation of elements and annotations into display lists optimized for a given graphics card. Engaged when opening views or changing view properties.
- Opening and saving files
- Point cloud data display
- DWF Export as individual sheets utilizes multiple processes.
- Color fill calculations are processed in the background on another process.
- Calculation of structural connection geometry is processed in the background on another process.
Autodesk claims that new versions of Revit do introduce more multi-threading tasks. The major differences between Revit 2023 and Revit 2018 are the following tasks:
- Background computations of MEP systems
- Some multi-threaded low-level geometric algorithms
- Materials UI
What is the impact of single and multiple cores for Revit?
Autodesk recommends the 3Ghz processor with multiple cores. The estimated Revit performance gain with multiple core execution per Autodesks documentation is around 20%.
High-performance computing is a concept that uses parallel computing to process compute-intensive tasks in the shortest amount of time. Revit has already implemented this concept partially, with only up to 20% performance gains.
The Revit code can still have further optimizations so that areas of the code that are written for a single thread can support multi-threading and speed up the program.
One example is the API interconnection with Revit that, at the moment, does not allow multi-threading. The plugin developers could, in theory, develop faster plugins to interact with Revit, but that interaction at the moment is restricted to a single thread. Otherwise, Revit can easily crash.
What kind of optimization uses archi in its applications for Revit?
Time is very precious. We have written, for instance, multi-threading code in Topography so that we can handle operations with millions of laser scanned points in a fraction of the time. We have fully used 32 cores in some of our machines to accelerate specific tasks to save 95% of the time a single could take. The intention is that our users do not have to look at the task monitor and realize that only 1 of the cores is at 100% usage and the remaining 31 at idle.
Revit uses decimal feet, and why is that bad for performance.
Another area that we in Europe have been wondering about is the storage of Revit distances in decimal feet. All the Revit geometry coordinates in the project database are in decimal feet, even when a project is a metric one. The issue with this process is that the metric units visible for the users outside the US are being converted back and forth from metric to decimal feet. A multiplication factor is used and run all the time to keep up with this unit conversion. So just by using Revit, mathematical operations happen all the time, which contributes to making Revit slow. But storing in decimal feet also contributes to another limitation: a model cannot be located farther away than 19 miles from the origin.
Revit is written in one of the most efficient and fast languages: C++. This language compiles directly to machine code and does not require a universal runtime system. C++ libraries make direct system calls to the OS.
The processor world is way different than in 1997 when Revit was first written. Processors became smaller and therefore become quicker and more energy-efficient. Multi-core processors were introduced in 2001, and Revit has since written code for multiple processors for its core operations and other priority and frequently used tasks. The list of tasks with multi-core capabilities is not that extensive yet, and there is a potential to make Revit faster with further improvements on the software side.
There are still some tasks in Revit that can take many minutes and even hours to complete. One of them is the generation of Topography. Once Autodesk focuses on improving these tasks to take full advantage of the powerful processors around, Revit can become faster.
From our perspective as a developer of applications for Revit, we will follow the capabilities that Autodesk provides to provide a faster interaction with Revit, besides our own strategies to provide the best user experience and code speed.