有没有一种方法可以在不分配任何内存的情况下对数组进行排序?

2023-11-24

我需要非常频繁地对相当大的集合(数百/低数千个项目)进行排序,即每帧以 60 fps 进行排序(我使用的是 Unity)。 计算每个项目的密钥有点慢,因此需要缓存。

我尝试过各种方法:

  • List.Sort() 与 IComparer,每次都计算键:超级慢
  • SortedList:速度快得多,但会生成 GC 分配(30KB/帧):为什么?它们是用钥匙盒装的吗(我用的是长钥匙)?键/值对是否已分配?如果我将 long 包装在一个类中,GC 就会减半,所以我的猜测是“两者”:1 次分配该对,一次分配用于装箱键(如果它是值类型)...
  • Array.Sort(keyArray, valueArray):太可怕了!速度慢且每帧生成 256KB GC!

很遗憾,因为 SortedList 似乎非常适合这项工作,我是否缺少任何无需 GC 的替代方案?


如果计算密钥太慢,您可以添加key属性到您的项目类,在排序之前计算它,然后使用您的第一个方法IComparer只是比较密钥。

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

有没有一种方法可以在不分配任何内存的情况下对数组进行排序? 的相关文章

  • fgets() 和 Ctrl+D,三次才能结束?

    I don t understand why I need press Ctrl D for three times to send the EOF In addition if I press Enter then it only too
  • 将字符串从非托管代码传递到托管

    我在将字符串从非托管代码传递到托管代码时遇到问题 在我的非托管类中 非托管类 cpp 我有一个来自托管代码的函数指针 TESTCALLBACK FUNCTION testCbFunc TESTCALLBACK FUNCTION 接受一个字符
  • 使用 Google Analytics API 在 C# 中显示信息

    我一整天都在寻找一个好的解决方案 但谷歌发展得太快了 我找不到有效的解决方案 我想做的是 我有一个 Web 应用程序 它有一个管理部分 用户需要登录才能查看信息 在本节中 我想显示来自 GA 的一些数据 例如某些特定网址的综合浏览量 因为我
  • c# Asp.NET MVC 使用FileStreamResult下载excel文件

    我需要构建一个方法 它将接收模型 从中构建excel 构建和接收部分完成没有问题 然后使用内存流导出 让用户下载它 不将其保存在服务器上 我是 ASP NET 和 MVC 的新手 所以我找到了指南并将其构建为教程项目 public File
  • .Net Core / 控制台应用程序 / 配置 / XML

    我第一次尝试使用新的 ConfigurationBuilder 和选项模式进入 Net Core 库 这里有很多很好的例子 https docs asp net en latest fundamentals configuration ht
  • 为什么模板不能位于外部“C”块内?

    这是一个后续问题一个答案 https stackoverflow com questions 4866433 is it possible to typedef a pointer to extern c function type wit
  • 是否有比 lex/flex 更好(更现代)的工具来生成 C++ 分词器?

    我最近将源文件解析添加到现有工具中 该工具从复杂的命令行参数生成输出文件 命令行参数变得如此复杂 以至于我们开始允许它们作为一个文件提供 该文件被解析为一个非常大的命令行 但语法仍然很尴尬 因此我添加了使用更合理的语法解析源文件的功能 我使
  • 初始化变量的不同方式

    在 C 中初始化变量有多种方法 int z 3 与 int 相同z 3 Is int z z 3 same as int z z 3 您可以使用 int z z 3 Or just int z 3 Or int z 3 Or int z i
  • Windows 10 中 Qt 桌面应用程序的缩放不当

    我正在为 Windows 10 编写一个简单的 Qt Widgets Gui 应用程序 我使用的是 Qt 5 6 0 beta 版本 我遇到的问题是它根本无法缩放到我的 Surfacebook 的屏幕上 这有点难以判断 因为 SO 缩放了图
  • 什么是 C 语言的高效工作流程? - Makefile + bash脚本

    我正在开发我的第一个项目 该项目将跨越多个 C 文件 对于我的前几个练习程序 我只是在中编写了我的代码main c并使用编译gcc main c o main 当我学习时 这对我有用 现在 我正在独自开展一个更大的项目 我想继续自己进行编译
  • char指针或char变量的默认值是什么[重复]

    这个问题在这里已经有答案了 下面是我尝试打印 char 变量和指针的默认值 值的代码 但无法在控制台上看到它 它是否有默认值或只是无法读取 ASCII 范围 include
  • 如何构建印度尼西亚电话号码正则表达式

    这些是一些印度尼西亚的电话号码 08xxxxxxxxx 至少包含 11 个字符长度 08xxxxxxxxxxx 始终以 08 开头 我发现这个很有用 Regex regex new Regex 08 0 9 0 9 0 9 0 9 0 9
  • 在Linux中使用C/C++获取机器序列号和CPU ID

    在Linux系统中如何获取机器序列号和CPU ID 示例代码受到高度赞赏 Here http lxr linux no linux v2 6 39 arch x86 include asm processor h L173Linux 内核似
  • 窗体最大化时自动缩放子控件

    有没有办法在最大化屏幕或更改分辨率时使 Windows 窗体上的所有内容自动缩放 我发现手动缩放它是正确的 但是当切换分辨率时我每次都必须更改它 this AutoScaleDimensions new System Drawing Siz
  • 如何在 C# 中播放在线资源中的 .mp3 文件?

    我的问题与此非常相似question https stackoverflow com questions 7556672 mp3 play from stream on c sharp 我有音乐网址 网址如http site com aud
  • 将变量分配给另一个变量,并将一个变量的更改反映到另一个变量中

    是否可以将一个变量分配给另一个变量 并且当您更改第二个变量时 更改会瀑布式下降到第一个变量 像这样 int a 0 int b a b 1 现在 b 和 a 都 1 我问这个问题的原因是因为我有 4 个要跟踪的对象 并且我使用名为 curr
  • C++ 成员函数中的“if (!this)”有多糟糕?

    如果我遇到旧代码if this return 在应用程序中 这种风险有多严重 它是一个危险的定时炸弹 需要立即在应用程序范围内进行搜索和销毁工作 还是更像是一种可以悄悄留在原处的代码气味 我不打算writing当然 执行此操作的代码 相反
  • 如何将字符串“07:35”(HH:MM) 转换为 TimeSpan

    我想知道是否有办法将 24 小时时间格式的字符串转换为 TimeSpan 现在我有一种 旧时尚风格 string stringTime 07 35 string values stringTime Split TimeSpan ts new
  • 如何连接字符串和常量字符?

    我需要将 hello world 放入c中 我怎样才能做到这一点 string a hello const char b world const char C string a hello const char b world a b co
  • 不同类型的指针可以互相分配吗?

    考虑到 T1 p1 T2 p2 我们可以将 p1 分配给 p2 或反之亦然吗 如果是这样 是否可以不使用强制转换来完成 或者我们必须使用强制转换 首先 让我们考虑不进行强制转换的分配 C 2018 6 5 16 1 1 列出了简单赋值的约束

随机推荐

  • JavaScript,停止额外的事件监听器

    想象一下我有这样的代码 var myFunc1 function event alert 1 var myFunc2 function event alert 2 element addEventListener click myFunc1
  • 在编译时查找基类

    标题几乎说明了一切 C 中是否有一种方法可以在编译时获取类的基类型 IE 是否可以将一个类传递给模板 并让模板使用其他模板来传递给定类的基类 我的问题不是我是否可以自己实现这样的功能 毫无疑问我可以 使用特征等 我的问题是是否有一些 模糊的
  • 如何知道 Parse.initialize() 何时已被调用?

    现在我使用静态布尔值来判断初始化何时发生 有没有更简单的方法可以知道我已经调用过初始化 谢谢你 解决了 非常感谢您的评论 您需要在扩展应用程序的类中初始化解析 然后将其作为应用程序 而不是其他活动 添加到清单文件中 这是我使用 Parse
  • MongoDb 的 C# 驱动程序:如何使用 limit+count?

    来自 MongoDb 文档 在使用skip 和limit 的查询中 count默认忽略这些参数 使用 count true 让它在计算中考虑跳过值和限制值 这正是我需要计算特定查询的结果元素的数量 直到它超过定义的限制 如 1000 但我在
  • Kafka如何读取__consumer_offsets主题

    我正在尝试找出我当前的高级消费者正在发挥哪些作用 我使用 Kafka 0 8 2 1 noKafka 的 server properties 中设置的 offset storage 我认为这意味着偏移量存储在 Kafka 中 我还通过在 Z
  • 如何在 Angular 2 客户端应用程序中隐藏/保护 API 密钥?

    我正在开发 Angular 2 应用程序 我正在从我的服务中进行多个 API 调用 但我不想发布密钥 我知道使用后端的密钥是首选方法 但肯定有一种方法可以从前端执行此操作 我一直在研究如何在前端有效隐藏 API 密钥 但没有找到任何关于如何
  • 交叉引用组件

    我的 net 解决方案中有三个项目 主要项目和两个类库项目 我发现我需要交叉引用类库项目 我可以这样做吗 安全吗还是有一些注意事项 当项目位于一个解决方案中时 IDE 不会允许您这样做 有一些微妙的方法可以混淆它 但是 由于程序集引用尚不可
  • 派生类中的显式模板静态成员实例化

    我正在尝试使用静态成员实现模板类 从模板类派生的类应该被实例化 而不需要编写额外的代码 这是我天真的 并且不成功 的方法 单例 h template
  • 为什么没有非整数枚举?

    为什么不能创建非整数枚举 我想知道这是否 是语言设计决策 或者在编译器中实现此决策是否存在问题 换句话说 在语言中实现非整数枚举是否可行 但只是没有合理的需求 或者 如果它不可行但合理 那么有什么障碍 请有人告诉我 C 中没有此功能的原因或
  • 在 Swift 中将 MKMapPoint 转换为 NSValue

    我想将 MKMapPoint 转换为 NSValue 在 Objective C 中我可以用下面的语句来做到这一点 MKMapPoint point MKMapPointForCoordinate location coordinate N
  • 在 Windows 8 应用程序中播放生成的缓冲区中的声音

    我正在将一些 C Windows Phone 7 应用程序移植到 Windows 8 手机应用程序使用 XNA音效从缓冲区播放任意声音 在最简单的情况下 我只需创建所需持续时间和频率的正弦波 持续时间和频率都可能有很大差异 因此我不想依赖
  • 为什么这个 jQuery Ajax 调用仅在 IE9 中失败(甚至在 IE8 和 IE7 中工作正常)

    我有一个网站 我可以在其中进行如下 ajax 调用 perform an ajax request to generate a new subscriber account jQuery ajax type POST url index p
  • Pandas - 每个经度/纬度的数据组/数据箱

    我有一堆地理数据如下 我想按经度 0 2 度和纬度 0 2 度的箱对数据进行分组 虽然对纬度或经度执行此操作很简单 但对这两个变量执行此操作最合适的方法是什么 User ID Latitude Longitude Datetime u v
  • 从 UglifyJs 构建 Angular 2 webpack SyntaxError:意外的标记:punc (.)

    我正进入 状态 来自 UglifyJs 语法错误 意外的标记 punc 在 angular2 webpack 上运行 npm run build 时出错 这是来自价差操作员的 试图在不到 1 小时的时间内演示一个项目 FML 将目标从 ES
  • 页面加载事件上的 jQuery 不起作用

    我希望我的文本在页面加载时淡入 我尝试使用此代码 document on load function div1 fadeIn 为什么这不起作用 我用的是3 1 1 你应该传递 on load window而不是文档 window on lo
  • 如何使用本机反应和反应导航设置背景图像?

    我正在使用 React Native 和 React Navigation v3 并且我正在尝试为我的整个应用程序设置背景图像 但由于某种原因 图像没有显示 如果我包装我的 Home 组件 背景图像将按预期显示 但如果我包装堆栈导航器 则背
  • 使用此关键字的 requestAnimationFrame

    我在用着webkitRequestAnimationFrame但我在对象内部使用它时遇到问题 如果我通过了this它将使用的关键字window我找不到它使用指定对象的方法 Example Display prototype draw fun
  • 让 Emacs fill-paragraph 能够很好地处理类似 javadoc 的注释

    我正在为我在工作中使用的 APL 方言编写 Emacs 主要模式 我已经得到了 基本字体锁定可以工作 并且在设置 comment start 和 注释 开始 跳过 注释 取消注释区域并填充段落 工作 然而 注释块通常包含 javadoc 风
  • 目前是否有无需身份验证即可获取 Instagram 用户媒体的方法?

    直到最近 还有多种无需 API 身份验证即可检索 Instagram 用户媒体的方法 但显然 该网站停止了所有这些 一些old方法 https api instagram com v1 users user id media recent
  • 有没有一种方法可以在不分配任何内存的情况下对数组进行排序?

    我需要非常频繁地对相当大的集合 数百 低数千个项目 进行排序 即每帧以 60 fps 进行排序 我使用的是 Unity 计算每个项目的密钥有点慢 因此需要缓存 我尝试过各种方法 List Sort 与 IComparer 每次都计算键 超级