Solved

Pagefaults: How much do they impact performance nowadays?

Posted on 2011-02-14
3
423 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

Title # Comments Views Activity
Excel file not created as expected 7 46
consuming an asmx web service in winforms application 3 24
SQL Login 17 38
Exit the loop 4 34
It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
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
This video explains how to create simple products associated to Magento configurable product and offers fast way of their generation with Store Manager for Magento tool.
A company’s greatest vulnerability is their email. CEO fraud, ransomware and spear phishing attacks are the no1 threat to a company’s security. Cybercrime is responsible for the largest loss of money to companies today with losses projected to r…

919 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

Need Help in Real-Time?

Connect with top rated Experts

23 Experts available now in Live!

Get 1:1 Help Now