结构如何影响效率?

时间:2014-02-03 05:23:05

标签: c performance structure

指针使程序更高效,更快捷。但结构如何影响计划的效率?它会让它更快吗?这仅仅是代码的可读性,还是什么?我可以举例说明它是如何做到的吗?

4 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

例如,让我们以数组和链表

为例

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

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

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

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

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

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

答案 2 :(得分:0)

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

但是,如果您考虑使用数据结构来构建抽象数据类型中的整个数据,您可以在其中使用不同类型的链表,树,图等或数组实现,那么您的算法在决定时间和空间复杂性方面起着至关重要的作用该计划。因此,从这个意义上说,您可以提高您的计划效率。

答案 3 :(得分:-1)

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