You cant say that /filter is faster than $read, as it entirely depends on what your goal is.
As far as hard disk efficiency goes, $read and filter are no different. They both open and close the file once. The difference is that /filter runs through all lines of the file and dumps the matching lines to some sort of output (a file, window or alias etc).
If you know this, $read can be faster than /filter (we'd have to bench it to be sure). To illustrate this: let's say you want to return 1 line from a file that matches a certain string. $read opens the file, and checks each line to see for a match, when it finds one it returns the result. Now lets say this result was found in the middle of the file (there were 5000 lines, so the 2500th).
Compare this to what you would do with filter: First of all, you need to create a window or a file, which will hold the filtered results. There is already overhead in this which $read doesn't suffer from, as it returns the result since it is an identifier. Second, /filter goes through all lines in the file (5000 instead of 2500), even though we were already satisfied with the line at line number 2500.
The point here is: you cannot say one is faster than the other, you'd have to take into account in which setting it is to be used, and to be certain you'd even have to bench.
What you can know on the other hand, is that a /filter will become more and more preferable over $read when there are multiple $read calls necessary. That's why while loops with $read are usually frowned upon by good scripters, as they know that with each call of $read, the file is opened and closed. Whereas with /filter, the file is opened once, all lines are gone through, and then the file is closed and you can do something with the results. If I have to choose between opening/closing a file 200 times in a row and opening/closing the file just once, then I know which method I'm going to prefer.
In conclusion, if he only wants to return 1 result from a file, then $read is the way to go, and not filter, as filter implies extra code to return the result to the place where you want it.
Note that if he is going to do frequent access to this file, a much better alternative would be a hidden window where he can then use $fline on. Or a hash table, where he can use $hfind on. Note that you can't take advantage of the hashing algorithm when you use $hfind. Instead, mIRC must loop through each item doing an iswm check on each of them until it finds a match, making it pretty much the same as what $fline does. I mention this, as some people might think hash tables are a magical thing that are always fast, though the truth is it depends on what you want to do and what kind of data you are holding.