in reply to Re^2: search array for closest lower and higher number from another array
in thread search array for closest lower and higher number from another array
Some thoughts on your benchmark!
Depending on the operating system you're working on, the actual results of your benchmark could be very different. If your benchmark was run on a *nix system, your first call to the subroutine &case1:
print "case1 finds ", &case1, " matches \n";causes the file to be read and cached by the *nix system. I wasn't sure how perl would or would not benefit from this, but a *nix grep will be able to do pattern matching on the file in cached memory. grep doesn't even have to do a memory to memory copy/move. ( I didn't look at the code, so grep may be doing the memory to memory copy/move. )
I ran you're benchmark on an AIX system, and the results were basically the same as what you saw before. I then modified you're script to call &case2 first, and then &case1 and then &case0 (only once, Benchmark complained!) on a new and un-cached file. The result was that &case0 was the fastest, followed by &case1 and the slowest was &case2(grep). I ran this script on OpenSUSE with similar results. It does appear that perl does get benefit of the caching. If I ran the test again, grep was the winner!
If you're used a *nix system, I hope this gives some idea of why grep looked so much faster than perl.
Note: It's faster to work in memory than on disk.
Further note: You may have to restart the system to guarantee the file isn't cached already. I made this mistake the first time by using a large .gz file that I unzipped, which caused the zipped and unzipped files to be cached.
Thank you
"Well done is better than well said." - Benjamin Franklin
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: search array for closest lower and higher number from another array
by JavaFan (Canon) on Feb 05, 2011 at 23:00 UTC | |
by flexvault (Monsignor) on Feb 06, 2011 at 15:10 UTC | |
by bigbot (Beadle) on Feb 07, 2011 at 07:06 UTC | |
by flexvault (Monsignor) on Feb 07, 2011 at 14:42 UTC | |
by bigbot (Beadle) on Feb 08, 2011 at 01:27 UTC |