堆栈在缓存中吗?

2024-03-17

在现代计算机中,我知道当前代码区域位于高速缓存中。然而,在许多计算机语言实现中,本地(自动)变量将位于堆栈上,因此会对堆栈进行大量内存访问。

在正常架构中,堆栈是否位于另一个缓存中?

如果不是,则假设堆栈可以重新定位到“本地”,即非常靠近当前代码段,以便它将位于用于代码的高速缓存内。这会加快自动变量的内存访问速度吗?


大多数现代计算机都会不加区别地缓存内存,因此 CPU 访问的任何内存都会被缓存。所以,这包括内存和堆栈。事实上,堆栈很可能几乎一直被缓存,因为它被频繁访问。

对堆栈进行缓存的主要问题是,由于它被频繁修改,可能会导致缓存与主内存不同步并触发缓存未命中,这会损害性能。这通常不会发生,因为大多数架构都使用所谓的回写缓存,这意味着每个缓存块,称为缓存行,有一个脏位,并在需要时使用缓存的延迟副本返回主内存。这通常会导致主内存更新相对较少,并且性能会很好。

但是,如果两个不同的线程尝试写入同一内​​存,则可能会出现性能问题。这可能会导致连贯性缺失,导致缓存写入和更新到内存并降低性能。通常,软件的结构不会使两个不同的线程使用相同的堆栈。但是,如果发生这种情况,则某些体系结构上的性能可能会很差,因为不同线程的堆栈访问冲突会导致频繁的缓存未命中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

堆栈在缓存中吗? 的相关文章

  • 本地化 ASP.NET 资源的滑动过期

    假设我们有 2 个站点 myDomain AU 和 myDomain RU 具有相同的代码和本地化资源文件 resx 和 ru resx 我们预计大多数英语用户将使用 AU 网站 大多数俄语用户将使用 RU 网站 但是 如果 AU 域的某些
  • C# 中单个 & 符号的第二个含义是什么?

    我在 C 中使用了单个与号 来表示 检查second条件语句即使第一个是false 但以下似乎是不同的意思 of 总而言之 谁能解释一下如何i 1在下面的例子中有效吗 List
  • 用于请求带有临时缓存的远程 Observable 的 RxJava 模式

    用例是这样的 我想暂时缓存最新发出的昂贵的Observable响应 但在它过期后 返回到昂贵的源Observable并再次缓存它 等等 一个非常基本的网络缓存场景 但我真的很难让它工作 private Observable
  • node-mongodb-native的插入性能

    我正在使用 MongoDB 测试 Node js 的性能 我知道其中每一个都很好 彼此独立 但我正在尝试一些测试来感受它们 我遇到了这个问题 但无法确定来源 问题 我正在尝试在单个 Node js 程序中插入 1 000 000 条记录 它
  • 优化 CSS 交付 - Google 的建议

    谷歌建议在 head 中使用非常重要的 CSS 内联 并在内部使用其他 CSS
  • sizeof(某个指针)总是等于四吗?

    例如 sizeof char 返回 4 也是如此int long long 我尝试过的一切 这有什么例外吗 您得到的保证是sizeof char 1 没有其他保证 包括不保证sizeof int sizeof double 实际上 在 16
  • 优化数据可视化 Web 应用程序的性能

    我正在重写 3 年前编写的数据可视化网络工具 从那时起 浏览器的 JavaScript 引擎变得更快 所以我正在考虑将部分工作从服务器转移到客户端 在页面上 数据在表格和地图 或图表 中可视化 它使用相同的数据 但以不同的方式 因此准备显示
  • Chrome 内存/垃圾收集问题

    我在使用 Chrome 时遇到内存 垃圾收集问题 我正在开发一个照片上传网站 该网站允许我的客户使用 HTML5 和文件 API 拖放照片进行上传 因此这在 IE 中不起作用 它仅适用于 Chrome 和 FF 我还没有在 Safari O
  • 为什么 Go 禁止取 (&) 映射成员的地址,却允许取 (&) 切片元素?

    Go 不允许获取地图成员的地址 if I do this p mm abc Syntax Error cannot take the address of mm abc 理由是 如果 Go 允许使用此地址 那么当地图后台存储增长或缩小时 该
  • 将 pandas 数据帧拆分为子数据帧列表的最快方法

    我有一个大数据框df我有完整的清单indices中的独特元素df index 我现在想创建一个由元素索引的所有子数据帧的列表indices 具体来说 list df df loc x for x in indices 运行这个命令需要很长时
  • python中的内存错误

    Traceback most recent call last File run 1341144766 1067082874 solution py line 27 in main File run 1341144766 106708287
  • 优化 LATERAL join 中的慢速聚合

    在我的 PostgreSQL 9 6 2 数据库中 我有一个查询 该查询根据一些股票数据构建计算字段表 它为表中的每一行计算 1 到 10 年的移动平均窗口 并将其用于周期性调整 具体来说 CAPE CAPB CAPC CAPS 和 CAP
  • 当我使用可变参数而不是常量参数时,为什么我的内联表 UDF 慢得多?

    我有一个表值内联 UDF 我想过滤该 UDF 的结果以获得一个特定值 当我使用常量参数指定过滤器时 一切都很好 并且性能几乎是瞬时的 当我使用可变参数指定过滤器时 它会花费明显更大的时间块 大约是逻辑读取的 500 倍和持续时间的 20 倍
  • Haskell:IORef 的性能

    我一直在尝试在 Haskell 中编码一个需要使用大量可变引用的算法 但与纯粹的惰性代码相比 它 也许并不奇怪 非常慢 考虑一个非常简单的例子 module Main where import Data IORef import Contr
  • 应用程序无缘无故地被杀死。怀疑 BSS 高。如何调试呢?

    我已经在CentOs6 6中成功运行我的应用程序 最近 硬件 主板和内存 更新了 我的应用程序现在毫无理由地被杀死 root localhost PktBlaster PktBlaster Killed 文件和 ldd 输出 root lo
  • 如何最大限度地提高服务器性能?

    我一直在努力了解性能和可扩展性 并想知道开发人员 系统管理员正在做什么来提高他们的系统的效率 为了标准化答案 如果您能尽力回答以下任一问题 将会有所帮助 Profile Magazine publication on Joomla Jobs
  • Pandas dataframe:每批行的操作

    我有一个熊猫数据框df我想计算每批行的一些统计信息 例如 假设我有一个batch size 200000 对于每批batch sizerows 我想要一列的唯一值的数量ID我的数据框 我怎样才能做这样的事情呢 这是我想要的一个例子 prin
  • 红宝石接球和效率

    catch在 Ruby 中意味着跳出深度嵌套的代码 在 Java 中 例如用Java也可以达到同样的效果try catch用于处理异常 但它被认为是糟糕的解决方案 而且效率非常低 在 Ruby 中 我们有处理异常的方法begin raise
  • 如何用 kevent() 替换 select() 以获得更高的性能?

    来自Kqueue 维基百科页面 http en wikipedia org wiki Kqueue Kqueue 在内核和用户空间之间提供高效的输入和输出事件管道 因此 可以修改事件过滤器以及接收待处理事件 同时每次主事件循环迭代仅使用对
  • python 日志记录会刷新每个日志吗?

    当我使用标准模块将日志写入文件时logging 每个日志会分别刷新到磁盘吗 例如 下面的代码会将日志刷新 10 次吗 logging basicConfig level logging DEBUG filename debug log fo

随机推荐

  • QML 创建文本元素需要很长时间

    我注意到在 QML 中创建文本元素需要很长时间 举个例子 import QtQuick 2 5 import QtQuick Window 2 2 Window visible true width 320 height 640 color
  • 如何在Python中检测小写字母?

    我需要知道是否有一个函数可以检测字符串中的小写字母 假设我开始编写这个程序 s input Type a word 是否有一个函数可以让我检测字符串 s 中的小写字母 最终可能会将这些字母分配给不同的变量 或者只是打印小写字母或小写字母的数
  • Xcode 7 Null 传递给需要非空参数的被调用者

    我更新了 Xcode 7 并给出了这个错误 Null 传递给需要非空参数的被调用者 recorder AVAudioRecorder alloc initWithURL NSURL fileURLWithPath NSString stri
  • py4j - 我将如何在 java 中调用 python 方法

    我最近发现了 py4j 并且能够从 python 调用静态 java 方法 现在我想从java调用python方法 我找不到太多文档 所以这是我能想到的最后一个可以告诉我是否可能以及如何实现的地方 您可以通过以下方式从 Java 调用 Py
  • TypeScript 错误:在 Visual Studio 中“找不到名称”

    我已经看过很多关于此问题的帖子和讨论 但我无法解决这个问题 这是我前几天的帖子 https stackoverflow com questions 36037962 how to get rid of reference path 3604
  • 当``type =“module”``或导入时功能不起作用[重复]

    这个问题在这里已经有答案了 import testBtn from functions js window onload function document getElementById questions1 style display b
  • FILESYSTEM 与 SQLITE,同时存储最多 10M 文件

    我想存储最多10M的文件 2TB的存储单元 我需要的唯一属性仅限于文件名及其内容 数据 文件最大长度为100MB 大多数小于1MB 需要删除文件的能力 并且写入和读取速度都应该是优先考虑的 而不需要低存储效率 恢复或完整性方法 我考虑过 N
  • matplotlib:如何将 XYZ 散点图转换为像素图像?

    我正在寻找某种方法将散点图 X vs Y 由 Z 标准化的颜色 转换为 2D 像素 图像 IE 如何绘制像素化图像 其中像素根据第三个变量着色 就我而言 我有一个星系列表 每个星系都有天空坐标 X Y 和距离 Z 我想制作 X 与 Y 的像
  • 如何在 Android 代码上执行 Java 测试

    我想执行一个 Java 类来测试 Android 应用程序的部分功能 来自 Java 模块 以将数据读 写到文件 如果我在 Android 模块中执行 我会得到 Stub 错误 Android SDK 如果我安装或模拟 它会非常慢 我只测试
  • 在 linq 和 EF 中按月份排序

    我有一个 linq 查询 其中包含月份名称 我希望结果按月份 一月 二月 三月 排序 目前我有以下内容 但它给了我一个错误 LINQ to Entities 无法识别方法 System DateTime Parse System Strin
  • Windows Phone 7.5 - 应用程序被逻辑删除时推送通知

    我编写了一个 Windows 7 5 手机应用程序 用于使用 MPNS 注册磁贴和 Toast 推送通知 我的所有基础设施都正常运行 并且电话已在 MPNS 上注册 我将 ChannelUri 保存在手机本地 然后将 ChannelUri
  • lxml XMLSyntaxError:未找到命名空间默认前缀

    我正在使用 lxml 来读取我的 xml 文件 我正在使用如下代码 它在 lxml2 3 beta1 上工作得很好 但在 lxml2 3 上它给了我 zn xml 语法错误 如下所示 我浏览了两个版本的发行说明 但无法弄清楚是什么导致了此错
  • 如何生成如图所示的拼贴图像

    如何生成如下所示的拼贴图像 如果您能让我知道是否有任何在线工具或应用程序可以执行此操作 我将不胜感激 谢谢 使用ImageMagickmontage像这样让你的蒙太奇10张图像宽并且所有图像邻接在一起 之间没有空格 montage geom
  • 第二个下拉列表所选项目在 ASP.NET MVC 中不会更改

    我对 ASP NET MVC 的行为有点困惑 因为它在 POST 之后没有更改下拉列表的值 有人可以解释如何做到这一点 首先我有一个如下所示的模型 public class Test public int OneID get set pub
  • 非法动态引用

    jniPath val subProjectPath projectDependencies value map module gt jniPath in LocalProject module name value val path li
  • 如何在 FluentValidation 中使用 Reflection?

    我有一个场景 我想使用反射来使用 Fluent Validation 进行验证 像这样的事情 public class FooValidator AbstractValidator
  • 从 Java 列表生成 p:tabs

    我想从 Java 列表创建 Primefaces 选项卡 我测试了这段代码
  • 在 mysql 更新查询中查找受影响的字段

    我这里有一个复杂的问题 假设我的表中有 5 个字段 而我的一个用户在运行 mysql 更新查询的表单的帮助下仅更新了 2 个字段 那么有什么办法可以查出哪两个字段被改变了 好吧 我不确定这是否是最好的方法 但它会起作用 请注意 语法适用于
  • 将通用列表数组绑定到 GridView

    您好 我有一个返回 问题 数组的列表 我的问题是如何将其绑定到网格视图 当我尝试调用 Question Ordinal 时 我发现它在数据源中不存在 我正在使用以下代码 GridView1 DataSource myList GetQ Gr
  • 堆栈在缓存中吗?

    在现代计算机中 我知道当前代码区域位于高速缓存中 然而 在许多计算机语言实现中 本地 自动 变量将位于堆栈上 因此会对堆栈进行大量内存访问 在正常架构中 堆栈是否位于另一个缓存中 如果不是 则假设堆栈可以重新定位到 本地 即非常靠近当前代码