Linux - GeneralThis Linux forum is for general Linux questions and discussion.
If it is Linux Related and doesn't seem to fit in any other forum then this is the place.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
Also note the very first op that returns a set of items like 'find' or 'grep -r' also serves to fill kernel caches meaning subsequent similar ops on the same set will be faster so you always have to run timing tests a few times. And most of the time using 'cat|less', 'cat|grep', 'ps|grep' (pgrep) or 'ls|grep' ('grep' or 'find') results in inefficiency, rarely it's used for compatibility reasons: one grep good, two greps baaa-aaahhhd!
http://www.linuxquestions.org/questi...2/#post3084228 (/proc/sys/vm/drop_caches) but IIGC that sysctl only frees memory from clean caches, it does not write out dirty objects. I don't know what else there is to free cached objects apart from 'sync'.
[root@Ath log]# time grep -r '' . | grep lizard
real 0m1.630s
user 0m0.040s
sys 0m0.057s
[root@Ath log]# time grep -r lizard .
real 0m0.118s
user 0m0.027s
sys 0m0.020s
[root@Ath log]# time grep -r lizard .
real 0m0.054s
user 0m0.030s
sys 0m0.013s
[root@Ath log]# time grep -r '' . | grep lizard
real 0m0.087s
user 0m0.033s
sys 0m0.043s
[root@Ath log]# time grep -r lizard .
real 0m0.054s
user 0m0.017s
sys 0m0.027s
[root@Ath log]# time grep -r '' . | grep lizard
real 0m0.086s
user 0m0.043s
sys 0m0.030s
[root@Ath log]#
Yes--caching is obviously working....How to explain all the details?--I'm not sure.
wow, you guys are talking pretty far over my head.
The results I get are grepping 5 GB hierarchies with about 15000 files. I am looking at times like 72s versus 7s (timing with my watch), rather than msec ranges.
I started observing this about 2 years ago and it has been absolutely consistent, so much so that I just got in the habit of doing it that way for big trees. Every once in a while I check to see if it is still true, and it is (on my computer anyway.)
I use a mac, but doesn't seem like that would make any difference.
First off, shame on you guys for trying to derive performance measurements out of tiny greps that don't even take a second. :-)
I'm not sure about the reason behind that time different using those two different syntaxes, but I can offer you the advice of always using the -I flag to ignore binary files. This drastically cuts down the time that my recursive greps take.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.