作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我明白什么表达cache oblivious方法。但是我想知道是否有任何简单的解释来说明如何设计可以最佳地使用缓存的数据结构,而无需知道缓存的大小。
你能否提供这样的解释,最好是一个(简单的)例子?
最佳答案
即使是像快速排序这样熟悉的算法也有些缓存无意识(但不是最佳的)。回想一下,它的工作原理是对数组进行分区,然后在分区的每一侧递归。最终,它在一个适合缓存的子阵列上运行,因此在完成该子阵列并移动到另一个子阵列之前,不会有更多的缓存未命中。这就是我们要找的属性(property)。
将此与插入排序进行对比,插入排序(使用技术术语)一直在整个地方跳跃。因此,除了插入排序需要移动 O(n^2) 项之外,在大型数组上使用时,它也会错过很多缓存。
不过,快速排序离最佳排序还有一段距离。每个单独的分区阶段都不会划分和递归 - 它会通过内存搅动缓存进行长时间的顺序运行。在子阵列大小足够小以至于我们开始获胜之前,这可能会发生多次,因此我们不会最小化缓存未命中的数量。
关于language-agnostic - 缓存遗忘数据结构背后的直觉是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3773397/
我正在寻找匹配 /(?=\W)(gimme)(?=\W)/gi 或类似的东西。 \W 应该是零宽度字符来包围我的实际匹配项。 也许有一些背景。我想用添加的文字填充替换某些单词(总是 \w+),但前提是
如何在不使用 Intent 连接到 VPN 服务的情况下以编程方式检测流量是否正在通过 VPN。有系统调用吗? 最佳答案 这个有效: private boolean checkVPN() {
我是一名优秀的程序员,十分优秀!