1
1
我不认为btrees或其他传统的排序数据结构(红黑树等)可以帮助您,因为它们按键而不是按相应的值来排序——换句话说,它们保证唯一的字段与它们排序的字段相同。您的需求是不同的,因为您希望一个字段具有唯一性,而另一个字段具有排序性。 您的性能要求是什么?基于python dicts的简单的纯python实现的唯一性和python排序,在一台速度不太快的笔记本电脑上,我得到了5秒钟的原始结构(基本上是对百万个元素的排序,从dict开始),大约9秒钟的“更新”,20000个新的id/value对,其中一半“重叠”(因此,覆盖)现有的ID和一半是新的(我可以更快地实现更新,大约6.5秒,但该实现有一个异常:如果“新”对中的一对与“旧”对中的一对完全相同(包括ID和值),则它是重复的——避免这种“相同的重复”是将我从6.5秒推到6.5秒的原因。到9点,我想你也需要同样的预防措施)。 这5秒和9秒的时间与您的要求有多远(考虑到您将要运行的机器的实际速度与2.4 GHz核心双核、2GB RAM以及我使用的这台笔记本电脑的典型笔记本电脑性能问题)?看,它是接近“惊人的距离”值得修补和尝试挤出最后几个周期,还是你需要数量级更快的性能? 我已经尝试了其他几种方法(用SQL DB,用C++和它的STD::排序和C,……),但是它们都比较慢,所以如果你需要更高的性能,我不确定你能做什么。 编辑 :因为OP说这个性能会很好,但他不能在任何地方接近它,我想我最好展示一下我用来测量这些时间的脚本…:
这是一次典型的跑步:
显然,总运行时间比我测量的总运行时间长几秒,因为它包括用随机数填充容器、随机生成“新数据”、在每次运行结束时销毁和垃圾收集等所需的时间。 这是在Mac OS X 10.5.7、2.4 GHz Intel Core Duo和2GB RAM的MacBook上系统提供的python 2.5.2(当我使用不同版本的python时,时间变化不大)。 |
2
1
完全有可能解决你的问题。为此,您应该注意python中的容器类型 总是 通过调用对象的方法来比较对象。因此,您应该执行如下操作:
笔记:
|
July · 如何定义数字间隔,然后四舍五入 1 年前 |
user026 · 如何根据特定窗口的平均值(行数)创建新列? 1 年前 |
Ashok Shrestha · 需要追踪特定的颜色线并获取坐标 1 年前 |
Nicote Ool · 在FastApi和Vue3中获得422 1 年前 |
Abdulaziz · 如何对集合内的列表进行排序[重复] 1 年前 |
asmgx · 为什么合并数据帧不能按照python中的预期方式工作 1 年前 |