容量大,运行时间长.人生苦短



需要帮助。甚至可能是精神上的帮助,甚至尝试过!

这一过程有望永远持续下去。需要关于如何从性能角度改进它的建议,以及关于如何更有效地处理数据以完成工作的任何想法。

我正在整理60根短琴弦。它们与第二组60配对,第二组是有效静态的。所以一切都会与一切配对。然后,成对的值将用于进行一些数据库搜索。这种处理还没有到位,当然还会增加更多的需求。我已经实现了Heap的置换算法(https://en.wikipedia.org/wiki/Heap%27s_algorithm)在VB.Net中,我对它的高效运行感到满意。

愚蠢的是,我用20对绳子拉开了序幕。3天后,它还没有结束。我输入了一些诊断报告,并收集了排列5到14个元素的经过时间。5在0.00975秒内完成。好的即使是11,其阶乘值为3991.68万,即排列的数量,也在5.6秒内完成。我收集的数据是一致的,正如我所期望的那样。我用14个元素来完成这项工作。耗时3小时22分14秒。

根据这些数据,我预计我试图运行的20元素排列大约需要10738年。生命太短…

当它运行时,我观察到Windows 10调度程序稳定地分配了11.5%到20.5%的CPU,这是默认值。因此,平均约为16%。如果它能够100%分配,我想这个过程会快6倍。我的机器是一台联想笔记本电脑,处理器为Intel(R(Core(TM(i7-8550U CPU@1.80GHz 1.99GHz。不是一台速度快的机器。

所以,我想把元素的数量推到60。我想,在我目前的机器上,这将需要数十亿年的时间。

任何关于非常快速、多个并行处理器的建议都将不胜感激。

任何关于数据重组、拆分、并行处理的想法也欢迎。然而,这并不是一种练习,60个元素都是现实生活中的元素。出于测试目的,我将运行一个精简集。事实上,我需要所有60个的排列。每个排列在生成时都需要完整存在,以便进行额外的处理。

我是不是要求太多了?提前感谢您的建议和经验。

让我们从这里最明显的问题开始。

60!是一个非常大的数字。让我重复一遍,大得离谱。

60!比特是(根据WolframAlpha(≈80000×太阳质量黑洞的信息熵(≈1×10^77b(

因此,即使你的数据存储为每个排列1位,你也需要一个宇宙来存储它

从现在到宇宙热死,生成60个物体的所有排列对于任何计算资源来说都是不可行的。

最新更新