I was running some timings in my code to see which of several functions was the best and I've been getting some odd results. Here's the code I'm using:
The functions that I'm passing to time_loop are pure functions -- they're not making any changes to global variables. And yet every time I run this, my debugging line in median3 shows that the third invocation takes significantly longer than the others. Sample run:
Why is that? These functions are entirely deterministic, and nothing is changing between invocations. But I see a strong pattern of time - smaller time - much longer time.
As for cache effects, the functions rely on a 125 MB global array, so that's not going to fit even in my 6MB L3. (Even if it did you'd expect the second and third invocations to be fast.)
That iterates MAXN which must be at least 50847534 - for each of the three calls to time_loop() the function ptr is jumping to the same function. Unless that code has to dynamically allocate memory or there is OS contention for some resource, there ought not be those differences.
I happen not to like the static declaration of functions for a variety of reasons except in certain instances-- But that is very probably not the cause of this problem.
You need to call getrusage() before and after - like you now do with clock() to see what is happening in the world of system resources.
Also clock() is just wall time, use the times() function to get system & user time - as consumed by parent & child.
I think shamrock wants to see that you are not calling exec or something else that eats the system resources or causes high kernel times maybe.
Nothing funny, just bit manipulation and accessing a big array. The functions are all similar and all display the same results; here's one example:
The system is 32-bit Xubuntu 8.10 on a quad-core Phenom II.
As I said before, the results are consistent. When I call
the time for the first, fourth, and seventh times are fast, the times for the third, sixth, and ninth times are slow, etc.
---------- Post updated at 01:23 AM ---------- Previous update was at 01:18 AM ----------
Quote:
Originally Posted by jim mcnamara
I happen not to like the static declaration of functions for a variety of reasons except in certain instances-- But that is very probably not the cause of this problem.
I don't do it much. If you have advice on better ways to do it, feel free to expound (or give a link!).
With regard to static functions:
I assume this is because the C99 standard says little about implemention of static text other than scope changes -
In large single file programs with a lot of static functions mixed in with auto functions -
I've encounteered really obscure problems in gcc 3.1, cc on HP UX 11.1. For example an auto function not being executed at all. Sounds odd, but it is true. The same "inherited program design" also screwed up optimizations by forcing the complier to make decisions it was not expected to make - according the HP compiler team anyway.
Basically to resolve the problems I had to completely turn off optimzation, and declare all functions static to get correct results. Since a fixed makefile was a requirement for the entire app suite, this meant a big rewrite for several very large programs.
Your problem is nothing like that. It almost HAS to be cache-related Based on what you said about your hardware, if you were to chunk your 125MB of data into 21 ~6MB chunks, then iterate (1,2,3) over each subset chunk the problem would not be there. If it is cache related - and with no other observations to work on that would be my guess.
Hello and thanks in advance for any help anyone can offer me
I'm trying to learn the find command and thought I was understanding it... Apparently I was wrong. I was doing compound searches and I started getting weird results with the -size test. I was trying to do a search on a 1G file owned by... (14 Replies)
-> We have 2 servers server1 and server2 server.
->server1 is master application and server2 is slave application server. ->output of server1 hardware and slave timing:
# hwclock --show Thu 05 Jun 2014 05:34:08 PM SGT -0.465666 seconds # date Thu Jun 5 17:34:16 SGT 2014
# cd... (6 Replies)
I have two shell scripts, one written with xargs for parallel processing (p1) and the other written in old school way (p3) .
when I execute them, i get the below values.
$ time ./p1
real 0m25.36s
user 0m0.32s
sys 0m0.80s
$ time ./p3
real 0m23.25s
user 0m6.20s
sys ... (4 Replies)
i have a very big script i have that i'd like to add a timeout to.
this script runs on a several remote host. i update this script with timeout clause and then copy it over to all the hosts on which it is currently on.
basically, i want the timeout to make the script abort/exit if it's... (1 Reply)
Hello ,
When using vim, can ctag and cscope support recording search results and displaying the history results ? Once I jump to one tag, I can use :tnext to jump to next tag, but how can I display the preview search result? (0 Replies)
I'm attempting to read a file that is composed of complex 32-bit floating point values on Solaris 10 that came from a 64-bit Red Hat computer.
When I first tried reading the file, it looked like there was a byte-swapping problem and after running the od command on the file Solaris and Red Hat... (2 Replies)
Hello there, I just needed to know how to get the timing right when using the gcc __builtin_prefetch() function, that is, how many instructions before the actual utilization of the data should I make the prefetch call.
I will be measuring the L1 cache hit rate with valgrind's cachegrind,... (3 Replies)
hi everyone. If you have a function created in your code and you want to find out how long it takes for it to run you can use a struct called gettimeofday().
so lets say we have a function like this
int myfunction (int r)
{
/*some math calculations*/
return answer;
}
How do i set up... (3 Replies)
I need to make it so an autmated process which involves ssh, times out if ssh prompts for a password. Most of the time it shouldnt prompt for a password. But if it does i need it to time it out or get a status and stop the ssh and log that the ssh failed and move onto the next server. Is there any... (9 Replies)
having problems using scp in that during peak hours it appears to time out.
anyone have similar experiences? any thoughts regarding a solution... (1 Reply)