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

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

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

  • 写回答

1条回答

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

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

    评论

报告相同问题?

悬赏问题

  • ¥15 gradio的web端页面格式不对的问题
  • ¥15 求大家看看Nonce如何配置
  • ¥15 Matlab怎么求解含参的二重积分?
  • ¥15 苹果手机突然连不上wifi了?
  • ¥15 cgictest.cgi文件无法访问
  • ¥20 删除和修改功能无法调用
  • ¥15 kafka topic 所有分副本数修改
  • ¥15 小程序中fit格式等运动数据文件怎样实现可视化?(包含心率信息))
  • ¥15 如何利用mmdetection3d中的get_flops.py文件计算fcos3d方法的flops?
  • ¥40 串口调试助手打开串口后,keil5的代码就停止了