Just to clarify that a bit more...
If you are checking assignments that are written in english then Turnitin is usually the best solution - mainly because Turnitin has a big market share in english language countries(particularly US/UK) so they have a massive store of user submitted content to compare against. Other plagiarism tools are able to access journals/web based searches and other public sources of information but no other plagiarism tool has the same amount of english language content previously submitted by students for comparison.
The most common complaints I hear about Turnitin are related to pricing and support - it's often a large expense but is usually pretty easy to justify in larger organisations that provide formal training and qualifications. I've also often heard from people who have had to wait weeks or months to get a response from Turnitin when dealing with some support issues.
If you are looking for an alternative to Turnitin I'd highly recommend Urkund - it has the market share in some non-english language countries (so in some countries Urkund is actually more expensive than Turnitin as Turnitin drops their prices to compete) Urkund is also being used by a number of english language organisations that are not happy with using Turnitin. Urkund also has a strong focus on customer support which can help a lot and I think the comparison matching tools are pretty comparable to Turnitin - the only drawback I see is that they don't have the same database size of existing content submitted by english language speaking students compared with Turnitin.
Full disclosure: I am the Moodle core maintainer of the Plagiarism API in Moodle - I have been paid by various organisations to develop Moodle code and Urkund contracted my time to develop the Moodle plugin to connect to their API. (I have also provided contracting services directly to Turnitin)