Solved

Pagefaults: How much do they impact performance nowadays?

Posted on 2011-02-14
3
424 Views
Last Modified: 2013-12-17
How important are pagefaults nowadays?

It used to be pagefaults were the dominating factor determining performance (and completely ignored in all those analyses of algorithms). But now computers typically have more than 2GB of ROM—the entire program and program data can fit in ROM.

Does this mean I needn't worry about where data is placed in memory like I used to?

For example, here's a test I did back in the mid 1980's:
Below are two examples of a FORTRAN nested Do loop which sets every element of an array A  to the value X. Both programs achieve exactly the same result; the only difference between the two is the order in which the array elements are referenced.

The example on the left loops with the first index I changing most often, while the example on the right loops with the last index K changing most often.
    DIMENSION A(100, 100, 100)    DIMENSION A(100, 100, 100)
    X = 1.0                       X = 1.0
    DO 10, K=1, 100               DO 10, I=1, 100
    DO 10, J=1, 100               DO 10, J=1, 100
    DO 10, I=1, 100               DO 10, K=1, 100
10  A(I,J,K) = X              10  A(I,J,K) = X
    END                           END

Open in new window

While the two examples appear to be nearly identical, a test run of the two programs reveals a startling difference between the two  —  the example on the left took 45 seconds to run using 30 seconds of CPU time, while the example on the right took 1 1/2 hours to run using 17 minutes of CPU time! [in the 1980's]

Ever since then I've been careful about data placement in memory and what order it's accessed.

Now with C# I don't have as much control over where in memory data is placed, and I'm wondering if I still need to be concerned about that.
0
Comment
Question by:deleyd
3 Comments
 
LVL 75

Assisted Solution

by:käµfm³d 👽
käµfm³d   👽 earned 166 total points
ID: 34892825
And don't forget about the garbage collector  = )


I believed the canned response is to say, "let the compiler figure it out." While there are subtleties to be attentive to such as the scenario you outline above, I would say for the most part, you are going to let the compiler do the work for you in a language like C# or Java. In languages such as C, you may be more inclined to monitor memory usage, but today, that is mostly a task for the embedded systems guys.
0
 
LVL 4

Assisted Solution

by:zylver
zylver earned 167 total points
ID: 34893237
kaufmed touch an important point; "the compiler". today the compilers optimizes this thing. and you only need to worry about the bussines logic. this is the goal of microsoft. be more productive forgetting the little problems
0
 
LVL 5

Accepted Solution

by:
dcesari earned 167 total points
ID: 34894872
Nowadays probably the equivalent of pagefault is cachehit or cachemiss - are you accessing sets of data that fit in the processor cache or not? - but the techniques to achieve cache hits are similar to those to avoid pagefaults.

I agree that now compilers do much of the work for you and in the fortran program you show, the loops would be automatically reordered even at the smallest level of optimization, however the compiler has a small-scale view of your code, and limited power to reorganize the large-scale design decisions that you took, if you design a GUI application this is of no importance, but if you manage big arrays of data, especially on multithreaded applications / multicore architectures, then how you organize and access the data in memory can still do the difference even with microsoft compilers.

0

Featured Post

3 Use Cases for Connected Systems

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, testing some more, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

We all know that functional code is the leg that any good program stands on when it comes right down to it, however, if your program lacks a good user interface your product may not have the appeal needed to keep your customers happy. This issue can…
The article shows the basic steps of integrating an HTML theme template into an ASP.NET MVC project
This tutorial gives a high-level tour of the interface of Marketo (a marketing automation tool to help businesses track and engage prospective customers and drive them to purchase). You will see the main areas including Marketing Activities, Design …
Finds all prime numbers in a range requested and places them in a public primes() array. I've demostrated a template size of 30 (2 * 3 * 5) but larger templates can be built such 210  (2 * 3 * 5 * 7) or 2310  (2 * 3 * 5 * 7 * 11). The larger templa…

778 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question