weixin_39559808 2017-09-20 02:06 采纳率: 12.5%
浏览 1639

数组和指针的访问效率问题

数组和指针哪一个访问效率高?是访问效率为什么?在网上看到两种声音,一种是指针的访问效率高,一种是数组的访问效率高(数组效率高的解释为指针间接访问,数组直接访问,故数组访问效率高)

  • 写回答

1条回答

  • tobyliu415 2017-09-20 03:47
    关注

    这个问题可能比较复杂,不过我觉得如果你使用的是C语言(一种高级语言)就最好不要纠结这个问题。
    我目前看到的讨论帖的实验都是基于特定编译环境的一些不成熟的实验。
    首先,大部分实验都是假设使用的VC6,本身VC6就是很古老的编译器,编译的代码质量不高,以此来讨论效率没有价值。
    其次,汇编语言的效率不是按照语句行数来说话,内存访问的效率主要决定因素是缓存是否命中,而不是语句多少。
    最后,很多编译器的优化选项对这个影响很大,例如-O0和-O9所产生的代码效率差异远大于这么一点点的效率差异。
    你要是有兴趣可以自己做个试验,在内存中开个数组,循环遍历,然后计算每秒钟可以遍历多少个内存单元。
    你会发现,当数组容量大于CPU缓存的时候,速度大约下降10倍!!!!!!!!这比20%左右的所谓效率差大太多了。

    评论

报告相同问题?

悬赏问题

  • ¥15 本题的答案是不是有问题
  • ¥15 关于#r语言#的问题:(svydesign)为什么在一个大的数据集中抽取了一个小数据集
  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 蓝桥杯单片机第十三届第一场,整点继电器吸合,5s后断开出现了问题
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 Arcgis相交分析无法绘制一个或多个图形