2015-10-15 48 views
2

我在手册和信息页面阅读了有关find命令中优化级别的章节,我不明白为什么我应该使用而不是使用最积极的优化级别。为什么我不应该使用查找优化?

唯一的相关句子我发现了(从4.4.2man find版本):

相反,被证明是可靠的,强大和有效的优化可以随着时间的推移较低的优化级别启用。

findutils测试套件对每个优化级别的查找运行所有测试,并确保结果相同。

如果我深知,这是关于打样find通过的findutils正确的行为,但是,本次测试服确保所有otimization水平给予了相同的结果。

回答

2

你错过了这句话:

基于成本的优化器有任何给定的测试是如何可能成功定主意。

这意味着,如果你有高度非典型内容的目录(如大量的命名管道和极少数的“常规”文件),优化实际上可能恶化查询由性能(在这种情况下,假设-type f-type p成功的可能性更大)。在这样的情况下,最好是手动优化它,这只有在-O1-O2才有可能。

即使忽略这个问题,基于成本的优化器的固定成本也很难得到正确的结果。涉及多个硬件和软件(硬盘,内核,文件系统),它们都会对它们进行一些缓存和优化。因此,很难预测不同的操作会是多么昂贵,甚至相对于彼此(例如,我们知道readdir(2)stat(2)便宜,但我们不知道要便宜多少)。这意味着即使假设典型的文件系统内容,基于成本的优化并不总能保证产生最佳的优化。较低的优化级别允许您通过反复试验来手动调整查询,如果更加费力,这可能更可靠。

相关问题