对具有多次缓存未命中的 1000-2000 个元素进行排序

2024-01-11

我有一个包含 1000-2000 个元素的数组,它们是指向对象的指针。我想让我的数组保持排序,显然我想尽快做到这一点。它们按成员排序,并且不是连续分配的,因此每当我访问排序成员时,都会假设缓存未命中。

目前,我是按需排序而不是添加排序,但由于缓存未命中和[大概]成员访问的非内联,我的快速排序的内部循环很慢。

我现在正在做测试并尝试一些事情(看看实际的瓶颈是什么),但是任何人都可以推荐一个好的替代方案来加快速度吗? 我应该进行插入排序而不是按需快速排序,还是应该尝试更改我的模型以使元素连续并减少缓存未命中? 或者,是否有一种我没有遇到过的排序算法对于将要缓存未命中的数据有好处?

编辑:也许我的措辞是错误的:),我实际上并不需要一直对我的数组进行排序(我不会按顺序迭代它们以进行任何操作)我只需要在进行二进制切割时对其进行排序以查找匹配对象,并且当时(当我想要搜索时)执行快速排序目前是我的瓶颈,因为缓存未命中和跳转(我在我的对象上使用


简单的方法:对每个插入进行插入排序。由于您的元素在内存中未对齐,我猜测是链表。如果是这样,那么您可以将其转换为一个链接列表,并跳转到第 10 个元素、第 100 个元素,依此类推。这与下一个建议有点相似。

或者,您将容器结构重新组织为二叉树(或者您喜欢的每棵树,B、B*、红黑……)并插入元素,就像将它们插入搜索树一样。

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

对具有多次缓存未命中的 1000-2000 个元素进行排序 的相关文章

  • “构建”构建我的项目,“构建解决方案”则不构建

    我刚刚开始使用VS2010 我有一个较大的解决方案 已从 VS2008 成功迁移 我已将一个名为 Test 的控制台应用程序项目添加到解决方案中 选择构建 gt 构建解决方案不编译新项目 选择构建 gt 构建测试确实构建了项目 在失败的情况
  • 动态加载程序集的应用程序配置

    我正在尝试将模块动态加载到我的应用程序中 但我想为每个模块指定单独的 app config 文件 假设我的主应用程序有以下 app config 设置
  • 在结构中使用 typedef 枚举并避免类型混合警告

    我正在使用 C99 我的编译器是 IAR Embedded workbench 但我认为这个问题对于其他一些编译器也有效 我有一个 typedef 枚举 其中包含一些项目 并且我向该新类型的结构添加了一个元素 typedef enum fo
  • 从Web API同步调用外部api

    我需要从我的 Web API 2 控制器调用外部 api 类似于此处的要求 使用 HttpClient 从 Web API 操作调用外部 HTTP 服务 https stackoverflow com questions 13222998
  • 用于登录 .NET 的堆栈跟踪

    我编写了一个 logger exceptionfactory 模块 它使用 System Diagnostics StackTrace 从调用方法及其声明类型中获取属性 但我注意到 如果我在 Visual Studio 之外以发布模式运行代
  • 在 Windows 窗体中保存带有 Alpha 通道的单色位图会保存不同(错误)的颜色

    在 C NET 2 0 Windows 窗体 Visual Studio Express 2010 中 我保存由相同颜色组成的图像 Bitmap bitmap new Bitmap width height PixelFormat Form
  • HTTPWebResponse 响应字符串被截断

    应用程序正在与 REST 服务通信 Fiddler 显示作为 Apps 响应传入的完整良好 XML 响应 该应用程序位于法属波利尼西亚 在新西兰也有一个相同的副本 因此主要嫌疑人似乎在编码 但我们已经检查过 但空手而归 查看流读取器的输出字
  • 在 ASP.NET 5 中使用 DI 调用构造函数时解决依赖关系

    Web 上似乎充斥着如何在 ASP NET 5 中使用 DI 的示例 但没有一个示例显示如何调用构造函数并解决依赖关系 以下只是众多案例之一 http social technet microsoft com wiki contents a
  • 带动态元素的 WPF 启动屏幕。如何?

    我是 WPF 新手 我需要一些帮助 我有一个加载缓慢的 WPF 应用程序 因此我显示启动屏幕作为权宜之计 但是 我希望能够在每次运行时更改屏幕 并在文本区域中显示不同的引言 这是一个生产力应用程序 所以我将使用非愚蠢但激励性的引言 当然 如
  • WCF 中 SOAP 消息的数字签名

    我在 4 0 中有一个 WCF 服务 我需要向 SOAP 响应添加数字签名 我不太确定实际上应该如何完成 我相信响应应该类似于下面的链接中显示的内容 https spaces internet2 edu display ISWG Signe
  • 如何设计以 char* 指针作为类成员变量的类?

    首先我想介绍一下我的情况 我写了一些类 将 char 指针作为私有类成员 而且这个项目有 GUI 所以当单击按钮时 某些函数可能会执行多次 这些类是设计的单班在项目中 但是其中的某些函数可以执行多次 然后我发现我的项目存在内存泄漏 所以我想
  • 如何在整个 ASP .NET MVC 应用程序中需要授权

    我创建的应用程序中 除了启用登录的操作之外的每个操作都应该超出未登录用户的限制 我应该添加 Authorize 每个班级标题前的注释 像这儿 namespace WebApplication2 Controllers Authorize p
  • 如何序列化/反序列化自定义数据集

    我有一个 winforms 应用程序 它使用强类型的自定义数据集来保存数据进行处理 它由数据库中的数据填充 我有一个用户控件 它接受任何自定义数据集并在数据网格中显示内容 这用于测试和调试 为了使控件可重用 我将自定义数据集视为普通的 Sy
  • 使用 x509 证书签署 json 文档或字符串

    如何使用 x509 证书签署 json 文档或字符串 public static void fund string filePath C Users VIKAS Desktop Data xml Read the file XmlDocum
  • zsh 问题:在提示符附近显示最新的文件和目录以及建议的最新文件或目录

    在 MacOS Big Sur 11 3 上 这是我的 zshrc 我想获取最新的修改或创建靠近提示的文件和目录 从最新到最旧的排序 这是我当前的配置 zshrc ZSH completion autoload Uz compinit co
  • C# 成员变量继承

    我对 C 有点陌生 但我在编程方面有相当广泛的背景 我想做的事情 为游戏定义不同的 MapTiles 我已经像这样定义了 MapTile 基类 public class MapTile public Texture2D texture pu
  • 混合 ExecutionContext.SuppressFlow 和任务时 AsyncLocal.Value 出现意外值

    在应用程序中 由于 AsyncLocal 的错误 意外值 我遇到了奇怪的行为 尽管我抑制了执行上下文的流程 但 AsyncLocal Value 属性有时不会在新生成的任务的执行范围内重置 下面我创建了一个最小的可重现示例来演示该问题 pr
  • 哪种 C 数据类型可以表示 40 位二进制数?

    我需要表示一个40位的二进制数 应该使用哪种 C 数据类型来处理这个问题 如果您使用的是 C99 或 C11 兼容编译器 则使用int least64 t以获得最大的兼容性 或者 如果您想要无符号类型 uint least64 t 这些都定
  • 如何将服务器服务连接到 Dynamics Online

    我正在修改内部管理应用程序以连接到我们的在线托管 Dynamics 2016 实例 根据一些在线教程 我一直在使用OrganizationServiceProxy out of Microsoft Xrm Sdk Client来自 SDK
  • 如何在文本框中插入图像

    有没有办法在文本框中插入图像 我正在开发一个聊天应用程序 我想用图标图像更改值 等 但我找不到如何在文本框中插入图像 Thanks 如果您使用 RichTextBox 进行聊天 请查看Paste http msdn microsoft co

随机推荐

  • 实现简单的输入流

    我想写一个简单的istream对象 这会简单地改变另一个istream 我只想实现readline 它会从原始流中读取一行 处理它 并返回处理后的行 并有一些通用代码read将使用我的读取行 缓存它 并提供所需的字节数作为输出 有没有什么课
  • 如何对具有软删除的表使用子查询?

    我有一个查询和一个子查询 如下所示 query not included here query query gt getQuery subQuery User select gt fromSub query sub query gt whe
  • 用于区分 Google Pixel 1/2、Google Pixel XL 和 Google Pixel 2 XL 的媒体查询

    我正在编写一个科尔多瓦应用程序 需要隔离这些谷歌手机来调整样式 鉴于这种 我很难区分任何一款 Google Pixel 手机 media only screen and min width 411px and max width 731px
  • 未应用 WPF 窗口样式

    我有一个 ResourceDictionary 其中包含应用程序中使用的控件的样式定义 所有样式都正确应用于窗口中的控件 但是窗口本身的 ResourceDictionary 中的样式没有被应用 这是我的 ResourceDictionar
  • 如何给DialogFragment添加动画?

    如何向 DialogFragment 添加动画 我的动画是 输出动画
  • 将 Selenium 与 Chromium 浏览器结合使用

    在 Selenium 选项 在 Firefox 上 中我可以找到Custom browser 是否可以使用此选项来运行 Selenium 测试铬浏览器 不是 Chrome 呃 接受的答案没有回答问题 Google Chrome 基于 Chr
  • 按最近排序 - PostGIS、GeoRuby、spatial_adapter

    我正在尝试执行一个订单查询来查找最接近 current user 的记录 我知道两点之间的距离是 current location euclidean distance record position 如何将其处理到 PostGIS 或 a
  • 在没有 Rails 的情况下使用 ActiveResource

    您好 我正在开发一个 Rails 应用程序 它通过 ActiveResource 公开一些方法 我想通过一个简单的远程 ruby 脚本访问这些资源 我想知道是否可以在没有 Rails 的情况下使用 ActiveResource 确实可以 A
  • 如何保持闪屏直到应用程序委托中的进程结束?

    在应用程序委托中 我放置了一些功能 我希望启动画面等待应用程序委托完成其功能 现在 我的应用程序立即一起运行初始视图控制器函数和应用程序委托函数 func application application UIApplication didF
  • Symfony 4.4 在用户测试中针对多个客户端的弃用警告已弃用,但仍存在于文档中

    受影响的 Symfony 版本 4 4 0 描述升级到 Symfony 4 4 0 后 我收到以下弃用警告 自 Symfony 4 4 起 在内核启动时调用 Symfony Bundle FrameworkBundle Test WebTe
  • 从另一个窗体 vb.net 运行函数

    我在 Form1 中有 Module Main 和一个名为 Main 的函数 Public Module Main Public Sub Main End Sub End Module 我想从 Form2 运行它 执行 Form1 Main
  • 应使用 AssertNull 或 AssertNotNull

    这是一个非常愚蠢的问题 但我第一次进行单元测试 所以 假设我有一个像 obj 这样的对象变量 如果这个 obj 为 Null 我希望我的单元测试失败 那么对于断言 我应该说 AssertNull 还是 AssertNotNull 我很困惑它
  • WebJob“主机未运行”。如何调试?

    Azure 网站 Web 作业处于联机状态 没有部署错误 并且在任何级别的已部署 Web 作业的 WebJob SCM 控制台上都看不到任何错误 除了 主机未运行 和一些模糊信息 见下文 我可以在 VisualStudio 2015 中本地
  • Flask-admin 不显示外键列

    class Parent db Model id db Column db Integer primary key True name db Column db String 120 def repr self return
  • R markdown ioslides 代码块增量模式

    如何让 R 代码块逐渐出现 例如 我在标题中添加了以下选项 other configurations output ioslides presentation incremental true 但增量模式仅适用于项目符号而不适用于代码块 S
  • XCode4 和数据模型编译出现 MOMC 错误

    每当我构建项目时 我都会收到错误 Command Developer usr bin momc failed with exit code 1 我在这里阅读了有关删除无关数据模型版本作为修复的帖子 但没有任何效果 我很困惑 因为没有任何东西
  • 如何截断哈希中的数据以使生成的 JSON 不长于 n 个字节?

    我有一个看起来像这样的哈希 a gt some string b gt another string c gt yet another string 我不想打电话to json最终 但生成的 json 字符串不能长于n bytes 如果字符
  • Visual Studio 在哪里记住哪些文件夹是“命名空间提供程序”?

    好吧 这可能真的很简单 但今天是星期五 这是漫长的一周 我似乎找不到人生的答案 基本上 我有一个已设置命名空间提供程序属性的项目 当同事从存储库获取最新代码时 这些属性似乎根本没有出现 即属性窗口中没有 命名空间提供程序 条目 可能是什么原
  • 让字符串在密码函数中工作

    您好 我对我的解释很抱歉 我对此很陌生 我目前正在研究密码功能 但遇到了问题 我已将帐户名设置为字符串 john 将帐户密码设置为 int 1111 密码工作正常 但该字符串导致错误 当我将 const string name john 更
  • 对具有多次缓存未命中的 1000-2000 个元素进行排序

    我有一个包含 1000 2000 个元素的数组 它们是指向对象的指针 我想让我的数组保持排序 显然我想尽快做到这一点 它们按成员排序 并且不是连续分配的 因此每当我访问排序成员时 都会假设缓存未命中 目前 我是按需排序而不是添加排序 但由于