如果有人在优化代码、实现的清晰性、效率和可移植性方面证明他们的设计权衡是合理的,人们将如何选择?

与此问题有关的一个相关示例可能是大文件处理,其中“大文件”是“相当多 GB”的问题,可以使用随机访问方法进行简化。

读取和修改此文件的方法可能是:

  • 无论如何都要使用流,并寻找所需的位置——它是可移植的,但可能很慢,而且不清楚——这几乎适用于所有操作系统。
  • 将文件的相关部分映射为一个大块。例如,对于每个块,mmap 一个 50MB 的文件块用于处理 - 这适用于许多操作系统,具体取决于为该系统实现 mmap 的微妙之处。
  • 只需对整个文件进行映射 - 这需要 64 位操作系统,并且是最有效和最清晰的实现方式,但不适用于 32 位操作系统。
  • 最佳答案

    不确定您要问什么,但设计过程的一部分是分析对便携性和性能(以及其他因素)的要求。

    如果您知道永远不需要移植代码,并且绝对需要最佳性能,那么您可以相应地调整您的实现。仅仅为了它本身的缘故而便携是没有意义的。

    另请注意,如果您同时想要性能和可移植性,则没有什么可以阻止您为每个平台提供实现。当然,这会增加您的成本,因此实际上,由您来确定您的需求的优先级。

    关于portability - 使用不可移植代码的理由,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1035744/

    10-14 09:21