Performance Tips

Manifold includes many capabilities previously found only on software that costs tens of thousands of dollars per license. That the software includes such sophisticated capabilities does not imply that any personal computer, no matter how limited or slow, will be able to adequately support use of such capabilities. In particular, work with large images will require lots of RAM and a fast processor. The thousands of dollars we save by purchasing Manifold can be invested into more RAM and more powerful processors that can serve us in other applications as well.

 

Most Manifold projects using vector drawings on modern computers will operate so fast that thinking about performance is not necessary. When working with large projects or large images, though, we may want to squeeze every bit of performance out of our systems. The following tips will help you achieve the greatest possible performance on your desktop when working with large maps. Many of these suggestions are generic suggestions that will help you create and operate the fastest Windows system possible.

 

Important Configuration Notice

 

Very Important: Before starting Manifold, go to the Windows Control Panel Display dialog Effects tab and make sure that the Show window contents while dragging check box is not checked.

 

 

Checking this box will greatly slow down the system when displaying complex maps and images because it forces a refresh of the window contents with each minor change in mouse position while dragging the window. Make sure the box is unchecked.

 

Hardware

 

 

Operating System and other Software

 

 

Manifold System

 

 

Time

Source for Table

1

Native table (inside the project)

8

Linked from a local MDB file

10

Linked from a local SQL Server via ADO.NET

40

Linked from a local SQL Server via OLE DB

10

Linked from a remote SQL Server via ADO.NET

250

Linked from a remote SQL Server via OLE DB

6000

Linked from a remote SQL Server via ODBC

 

 

The User

 

 

People are sometimes amused that we include the user as part of our performance tips. However, the greatest gains in performance are usually achieved by using a better method or algorithm. More often than not the sole factor in whether a better method is used is the expertise and clarity of mind that can be mustered by the user. A healthy, well-rested, expert user is the best performance accelerator around.

 

General Education

 

Manifold works with many standard Microsoft facilities and products as well as with other industry standard products. Here are some examples drawn from many such features:

 

 

One of Manifold's great strengths is exactly that Manifold uses a wide variety of industry standard products and technologies. Doing so makes it possible for people to apply in a familiar way within Manifold the expertise they have already acquired through the use of standard Microsoft products, and it also makes it possible for Manifold applications to leverage the power and flexibility of many other products and technologies in an industry-standard way.

 

However, this documentation does not teach such industry-standard products and technologies: it is assumed that if users want to employ such things they either already know how to use them or they have the ability to take advantage of the vast number of publications, web pages and training products that already exist for such industry standard products and technologies. There is no point in duplicating within this documentation those educational and support resources that already exist to a much greater degree.

 

Therefore, if we want to use a technology such as ADO .NET or ASP .NET or SQL Server we can certainly do so with Manifold. But if we don't know enough about such technologies to use them we should browse the web or go to our local high tech book store and buy one of the hundreds of books that teach the use of such technologies and then dig in and learn how to do so. Part of the point of using such technologies is exactly that they are already very well documented in a huge selection of publications.

 

Another benefit to using such standard technologies is that if we are unfamiliar with them and then have to learn about them to use them with Microsoft the education we invest into ourselves is not restricted to just Manifold. Learning about something like SQL Server or Oracle or ADO .NET will be useful knowledge in the many thousands of other applications that use such standard things.

 

Systems

 

Manifold is developed on Intel and AMD processors with average performance and not on unusually powerful machines. Most development is done using Windows Vista, Windows XP and Windows Server 2003. Faster machines are deliberately avoided to force a conservative perspective into development for core system functions. Given enough RAM for the task, required performance with almost any reasonably contemporary systems will be acceptable and performance on better than average systems will be stellar.

 

As processor speeds continue to improve performance on state-of-the-art machines will become dazzlingly fast. Machines with 4 to 8 gigabytes of RAM, many hundreds of gigabytes of disk drives, 64-bit quad core processors and CUDA-enabled nVidia graphics engines with over 100 stream processors have become very affordable. RAM, in particular, has become almost dirt cheap so there is no excuse for not equipping one's machine with gigabytes of RAM.

 

See the essay on Using RAM and other Machine Resources for the Manifold "spin" on this topic.

 

Very Large Jobs

 

No matter how fast Manifold can operate it will always be possible to ask Manifold to perform a task that will take a very long time to accomplish. Some jobs can seem to take an unreasonably long time if, without realizing it, we have suddenly increased the amount of data involved as compared to previous tasks.

 

Raster data and images can involve dramatically greater work for what appears to be a small increase in image size because the data in images increases as the square of any increase in height and width of the image. An image that's 40% larger takes 100% more work to manipulate. An image that is twice as big will take four times the work. For raster data such as DEMs it is easy to forget that scaling up from a 100 x 100 image to a 1000 x 1000 image will end up requiring 100 times as much work. What used to take one second can take 100 seconds with the larger image.

 

Many networking and geometric problems involve geometric growth in computation requirements. What appears to be a small increase in the problem can increase computation time from seconds to days. For example, growing the size of a road network so that it covers an entire state instead of a few counties could lead to a tenfold increase in the height or width of the map. The additional area of the map can easily add 100 times as many road nodes and links and thus lead to a million-fold increase in computation time for certain complex network tasks.

 

When performing computations that grow geometrically it is important to increase the size of the task in small steps. Begin by verifying your procedure with a very small subset of the data and then increase the size of the problem in small steps so you can see where asymptotic growth in computation requirements begins. Note also that increasing the size of jobs will likely also place greater demands on system RAM.

 

As memory requirements increase, at some point a machine will run out of available RAM and begin paging to disk. At that point processing will become profoundly slower. See the Using RAM and other Machine Resources essay for why. To avoid this effect, use a machine that is better scaled to the task at hand or reduce the size of the job to what will fit into the machine being used. It is unrealistic to expect a machine with 128MB of RAM to be able to process large tasks as efficiently as one equipped with 8GB of RAM.

 

Some specialized tasks with large maps will take days to accomplish. People worldwide launch such jobs every day with Manifold using a spare machine that is left "cooking" for a few days to accomplish a desired task. They're happy because such things used to require weeks with older software or hardware. Run some experiments before launching such large jobs so you know what to expect.

 

Memory and Large Files

 

When Manifold opens a very large .map file not all of the contents of the .map are brought into memory at once. Components will be brought into memory as needed from the .map file stored on disk. Once they are in memory accesses will occur faster than in the initial usage since, of course, RAM memory is thousands of times faster than hard disk.

 

The advantage of having lots of RAM in a computer is that Windows editions such as Windows XP or Windows 2000 will leave items in memory until the memory is needed for something else by Windows. If we have ample RAM, as we work with a project the various components will end up in RAM and will stay there. This effect is especially pronounced with x64 Windows editions, which can actually work with large amounts of RAM effectively.

 

If you do not have enough RAM to run projects in memory, no matter how fast a processor you have you will have much less performance if the system begins paging to disk. That is why RAM is more important than processor speed until you have enough RAM so you never have to page to disk.

 

Notes

 

By mentioning certain brands we don't mean to imply anything negative about other brands. At this writing, the current generation of machines being installed at manifold.net use nVidia graphics engines and mostly Intel processors. nVidia has done a super job of writing good code for Windows and creating innovations like CUDA, which currently provides the fastest general-purpose processing around.

 

However, Intel and AMD's ATI divisions continue to be a major power in processors and no doubt will respond to nVidia's competitive stimulus with advances of their own. Likewise, we expect that NVIDIA's masterful driver work will inspire other processor vendors to pay better attention to writing effective drivers. Leadership positions in CPUs and graphics engines can change overnight, and often have.

 

From a software perspective, we love seeing the processor and graphics vendors work harder to offer more performance at lower price!

 

See Also

 

See the Memory Requirements topic for RAM and hard disk memory requirements.

 

See the Limitations topic for general notes on Manifold limitations when operated in various Windows systems.