热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

循环性能(缓存问题)

循环性能(缓存问题)原文:https://www.geeks

循环性能(缓存问题)

原文:https://www . geeksforgeeks . org/performance-of-loops-a-cache-question/

考虑下面两个计算 2D 数组元素和的 C 语言函数。忽略编译器优化,两者中哪一个更好的实现 sum?

// Function 1
int fun1(int arr[R][C])
{
    int sum = 0;
    for (int i=0; i      for (int j=0; j          sum += arr[i][j];
}
// Function 2
int fun2(int arr[R][C])
{
    int sum = 0;
    for (int j=0; j      for (int i=0; i          sum += arr[i][j];
}

在 C/C++中,元素以行主顺序存储。因此第一个实现具有更好的空间局部性(在连续迭代中引用附近的内存位置)。因此,对于迭代多维数组,第一个实现应该总是首选的。

如果您发现任何不正确的地方,或者您想分享关于上面讨论的主题的更多信息,请写评论


推荐阅读
author-avatar
小白菜
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有