Solved

Pagefaults: How much do they impact performance nowadays?

Posted on 2011-02-14
3
427 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
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

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

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

Suggested Solutions

In my previous two articles we discussed Binary Serialization (http://www.experts-exchange.com/A_4362.html) and XML Serialization (http://www.experts-exchange.com/A_4425.html). In this article we will try to know more about SOAP (Simple Object Acces…
This article aims to explain the working of CircularLogArchiver. This tool was designed to solve the buildup of log file in cases where systems do not support circular logging or where circular logging is not enabled
The Email Laundry PDF encryption service allows companies to send confidential encrypted  emails to anybody. The PDF document can also contain attachments that are embedded in the encrypted PDF. The password is randomly generated by The Email Laundr…
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…

738 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