当前位置: 首页 > 面试题库 >

预取数据以缓存用于x86-64

柴正祥
2023-03-14
问题内容

在我的应用程序中,有一点我需要对大块连续的内存数据块(100
MB的内存)执行计算。我当时的想法是继续预取程序将来会接触的部分块,以便在我对该部分执行计算时,数据已经在缓存中。

有人可以给我一个简单的示例,说明如何使用gcc实现这一目标吗?我在_mm_prefetch某处阅读,但不知道如何正确使用它。还要注意,我有一个多核系统,但是每个核都将并行处理不同的内存区域。


问题答案:

gcc使用内置函数作为低级指令的接口。特别适合您的情况__builtin_prefetch。但是,只有在访问模式不容易自动预测的情况下,使用此选项,您才应该看到可测量的差异。



 类似资料:
  • 我正在尝试让JMS消费者致力于ActiveMQ服务器,但是我遇到了一些问题,这些解决方案似乎只会导致更多问题。 我正在使用Spring的DMLC(cacheLeve设置为CACHE\u连接)和CachingConnectionFactory(cachingConsumers设置为true),将Activemq自己的连接工厂包装在部署在Jboss AS中的Webapp中。 据此http://acti

  • 假如要开发一个电子商务网站,商品的类别数据Category,是很少发生变化的,而几乎在每个网页,都需要显示商品类别。如果每次都要从mongoDB数据库中查询出商品类别,显然不是一个好主意。 bugu-mongo-cache模块,就是针对这种应用场景的:某个表的数据量很小,很少发生变化,但需要频繁的查询。这样的数据,我们希望能够“常驻内存”,既减少数据库的查询次数,又加快对用户的响应速度。 初始化

  • 数据缓存是指将一些 PHP 变量存储到缓存中,使用时再从缓存中取回。 它也是更高级缓存特性的基础,例如查询缓存 和内容缓存。 如下代码是一个典型的数据缓存使用模式。 其中 $cache 指向缓存组件: // 尝试从缓存中取回 $data $data = $cache->get($key); if ($data === false) { // $data 在缓存中没有找到,则重新计算它

  • setStorageSync 基础库1.3.9开始支持,iOS版本2.1.23,Android版本2.1.38 setStorageSync(string key, any data) ft.setStorage 的同步版本 参数 string key 本地缓存中指定的 key any data 需要存储的内容。只支持原生类型、Date、及能够通过JSON.stringify序列化的对象。 示例代

  • jd.setStorage(OBJECT) 异步接口,将数据存储在本地缓存中指定的 key 中,会覆盖掉原来该 key 对应的内容。 OBJECT 参数说明: 参数 类型 必填 说明 key String 是 本地缓存中的指定的 key data Object/String 是 需要存储的内容 success Function 否 接口调用成功的回调函数 fail Function 否 接口调用失

  • 在settings解析代码里面涉及到了一个新的对象,叫做MetaClass,MetaClass的作用是保存指定类的元数据,这里的元数据指的是:指定类的可读/可写的属性、方法以及构造器等信息。 // 获取Configuration类的描述对象 MetaClass metaConfig = MetaClass.forClass(Configuration.class, localReflectorFa