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

使用不可移植代码的理由

  •  3
  • Arafangion  · 技术社区  · 16 年前

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

    这个问题的一个相关例子可能是大文件处理,其中“大文件”是“相当大的GB”,对于使用随机访问方法简化的问题。

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

    1. 不管怎样,使用流,并寻找到所需的地方-这是可移植的,但可能很慢,而且不清楚-这将适用于几乎所有的操作系统。
    2. 将文件的相关部分映射为一个大块。例如,mmap为每个块处理一个50MB的文件块——这对许多操作系统都有效,这取决于为该系统实现mmap的微妙之处。
    3. 只需mmap整个文件—这需要一个64位操作系统,并且是实现这一点的最有效和最清晰的方法,但是不适用于32位操作系统。
    5 回复  |  直到 16 年前
        1
  •  4
  •   Justicle    16 年前

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

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

    还要注意,如果您同时需要性能和可移植性,没有什么可以阻止您为每个平台提供实现。当然,这会增加你的成本,所以,真正的,这取决于你优先考虑你的需求。

        2
  •  2
  •   lavinio    16 年前

    没有约束,这个问题就不能理性地回答。

    你在问“什么是最好的颜色”,却没有告诉我们你是在粉刷一栋房子、一辆汽车还是一幅画。

    约束条件至少包括

    • 选择的语言
    • 目标平台(多CPU工业级服务器或iPhone?)
    • 优化 速度 VS 记忆
    • 成本(谁提供资金,是否存在交货限制?)

    没有一款软件可以具有“终极”的可移植性。

    这类问题的一个例子是,使用各种方法处理,但对所需的特定输入/输出和“最佳”的度量都有严格的限制。 WideFinder 项目。

        3
  •  2
  •   Partial    16 年前

    基本上,在编码之前需要先考虑。每一个项目都是独一无二的,对需求的分析有助于决定什么是最初的项目。任何项目的最佳解决方案取决于以下几点…

    首先,这个项目需要是多平台的还是最终是多平台的?根据您的选择,选择正确的编程语言应该更容易。同样,您也可以在项目中使用多种语言,这是完全正常的。可移植性并不一定意味着性能降低。这意味着要实现目标需要更努力的工作,因为你需要高质量的代码。而且,每种编程语言都有自己的哲学。了解它们是什么。有一点是肯定的,某些问题经常反复出现。这就是为什么了解不同的设计模式有时会产生不同的效果,但有些语言有自己的习惯用法,并且在选择语言时非常相关。另一件需要思考的事情是你可以为你的项目采用不同的方法。多线程、套接字、客户机/服务器系统和许多其他技术都可以供您使用。选择正确的技术可以帮助改进项目。

    了解目前的需求和不同的解决方案将有助于决定何时需要为不同的权衡做出选择。

        4
  •  1
  •   Scott Weinstein    16 年前

    这真的取决于项目的驱动因素。如果你在做内部企业开发,那么做最简单的事情,可以在你的目标硬件上工作。根据需要修改性能要求。

    如果您知道需要在第一天支持不同的硬件平台,那么您显然需要选择一个可移植的实现,或者使用多种方法。

        5
  •  0
  •   Jon Limjap    16 年前

    可移植性的便携性是自创建以来Java的营销秘诀,它是C惯例中的一个生命事实,我相信大多数遵守Java或C语言的人都会这样说。

    然而,绝对可移植性只适用于最简单到最简单的中等复杂度应用程序——任何高复杂度的应用程序都需要专门的调整。

    推荐文章