【问题标题】:How do structures affect efficiency?结构如何影响效率?
【发布时间】:2014-02-26 12:24:54
【问题描述】:

指针使程序更高效、更快。但是结构如何影响程序的效率呢?它让它更快吗?仅仅是为了代码的可读性,还是什么?我可以举一个例子来说明它是如何做到的吗?

【问题讨论】:

  • 你原来的前提错了,指针跟效率没多大关系
  • 好的,我想我知道你指的是什么:将指针作为参数传递给函数而不是复制。
  • Bingo 那么这样的结构对程序有什么影响?

标签: c performance structure


【解决方案1】:

指针只是指向一个内存地址,它们与效率和速度无关(它只是一个存储一些地址的变量,这些地址是一些指令执行所必需/有帮助的,仅此而已) 是的,但数据结构会以多种方式影响程序/代码的效率。它们可以增加/减少算法的时间复杂度和空间复杂度,最终导致代码(在其中实现算法)。

以数组和链表为例

数组:在内存中按顺序分配的一些空间

链表:内存中随机分配的一些空间,但通过指针连接

在所有情况下都可以使用(假设没有太多的空间分配)。但是由于数组是连续分配检索比链表中的随机分配更快(每次获取下一个分配块的地址然后获取数据)

因此这可以提高代码的速度/效率

有很多这样的例子可以证明为什么数据结构更重要(如果它们不是那么重要,为什么要设计新算法,主要是为什么要学习它们)

参考链接, What are the lesser known but useful data structures?

【讨论】:

    【解决方案2】:

    结构与效率无关,它们用于抽象。它们允许您将所有相关数据保存在一起,并通过一个名称引用它。

    不过,有一些与性能相关的功能。如果您将所有数据都放在一个结构中,则可以将指向该结构的指针作为一个参数传递给函数。这比将大量单独的参数传递给函数要好,因为每个值都可能是结构的成员。但这不是我们使用结构的主要原因,它主要是一个额外的好处。

    【讨论】:

    • 那么按照程序员的逻辑,我应该如何以及何时使用结构?
    • 只要您有相关数据应该一起使用。任何体面的编程教科书都应该涵盖这一点。
    • 即使在单独的函数中,我也更有能力像使用全局变量一样使用它们?
    • 是的。例如,制作结构数组是很常见的。另一种方法是为每个成员设置一个单独的数组。
    • 这都是数据抽象的一部分,任何体面的编程课程或教科书都应该涵盖这些内容。
    【解决方案3】:

    指针对程序的效率和执行时间/速度没有任何贡献。结构提供了一种以相同名称存储不同变量的方法。这些变量可以是不同的类型,每个变量都有一个名称,用于从结构中选择它。例如,如果您要存储有关学生的数据,它可能由 Student_Id、Name、Sex、School、Address 等组成。其中 Student_Id 是 int,Name 是字符串,Sex 是 char (M/F) 等,但所有变量都是在“单个内存块”中组合为单个结构“学生”。因此,每次您需要获取或更新学生数据时,您只需要处理结构化数据。现在想象一下,如果您尝试分别存储所有这些 int、char、char[] 变量并单独更新它们,您可能会遇到多少问题。因为您需要为每个学生的记录更新不同内存位置的所有内容。

    但是,如果您考虑使用数据结构以抽象数据类型构建整个数据,您可能会使用不同类型的链表、树、图等或数组实现,那么您的算法在决定时间和空间复杂度方面起着至关重要的作用的程序。所以从这个意义上说,你可以让你的程序更有效率。

    【讨论】:

      【解决方案4】:

      当您想优化内存/缓存使用结构时,可以提高代码效率(使其更快)。这是因为当数据从内存加载到缓存时,它通过将数据拟合到这些字边界以字(32-64 位)完成,您可以确保加载第一个 int 时,对于双 int 结构(可能是严重的坐标)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-26
        • 2011-03-02
        • 1970-01-01
        • 1970-01-01
        • 2013-04-14
        • 1970-01-01
        • 2018-08-13
        • 2020-03-08
        相关资源
        最近更新 更多