代码之家  ›  专栏  ›  技术社区  ›  jeje

运行“cat”可以加速linux机器上的后续文件随机访问吗?

  •  6
  • jeje  · 技术社区  · 16 年前

    cat myfile > /dev/null 在访问它之前,我的文件页面会按顺序进入内存,因此比干式随机访问更快。

    6 回复  |  直到 16 年前
        1
  •  7
  •   Hasturkun    16 年前

    虽然这样做可能会迫使文件内容进入系统缓存,但最好使用 posix_fadvise() (与 POSIX_FADV_WILLNEED 建议)或(阻止) readahead() 调用以使内核预缓存您需要的数据。

    编辑: POSIX_FADV_RANDOM 这里有一篇文章对用法进行了很好的解释: Advising the Linux Kernel on File I/O

        2
  •  4
  •   Paul Dixon    16 年前

    不过,这很可能会导致性能的显著提高。 在传统的旋转介质(即硬盘)上,顺序访问(cat文件>/dev/null/fadvise)比随机访问快得多。

        3
  •  4
  •   Kristof Provost    16 年前

    只有一种方法可以确保任何(可能为时过早?)优化都是值得的:对其进行基准测试。

        4
  •  2
  •   Joachim Sauer    16 年前

    唯一真正有用的方法是根据您的具体情况对其进行基准测试。

        5
  •  2
  •   Thomi    16 年前

    提前阅读也是一个很好的选择。..

        6
  •  0
  •   MarkR    16 年前

    对大文件执行“cat”操作可能会将数据带入缓存,并从缓存中吹出更多有价值的数据;这不是你想要的。

    如果性能对你来说很重要,你无论如何都会进行定期的性能测试(以及浸泡测试等),所以继续这样做并观察你的图表、数字等。