在多核箱,Java线程调度决策是相当随意的,它分配基于创建线程时在线程的优先级,从该线程被创建等等。

我们的想法是使用PSO将随机设定线程的优先级来运行的调谐过程,然后最终达到最佳的优先级,其中所述适应度函数是该程序的总运行时间?

当然会有更多的参数,如优先事项将在运行期间转移到找到一个最佳的优先功能。

如何实用,有趣的确实的想法声音?和任何建议。 只是一些背景, 香港专业教育学院在Java编程了/ C / C ++了几年,现在有各种项目,另一种方法是使在C,其中默认的线程调度器是操作系统基于此线程调度器。

有帮助吗?

解决方案

要找出最好的方法 - 开始一个开源项目,看到人们的使用/反应

这听起来很有趣,我 - 但我的个人不觉得它非常有用。也许,我们只是没有在那里并发编程是一样普遍和容易,因为它可能是点。

通过促进功能编程的,我想世界将有助于避免尽可能(从而使线程调度的总体性能的影响较小)的线程同步移动

从我个人的主观经验,在软件大多数性能问题,可以通过改进的是占放缓的90%单一的瓶颈区域解决。这种优化可以帮助发现了这一点。我不知道该调度策略能有多少提高整体性能,虽然。

不要气馁,但!我只是说无中生有的。这听起来很有趣,所以为什么不干脆用它玩反正:)

其他提示

描述你的方法是静态的方法,即你需要运行该程序数次,然后拿出一个调度方案,然后附带节目的调度信息。

问题是,对于大多数不平凡的计划,他们的表现将部分取决于他们正在使用的具体数据。即使你找到一个最佳的方式来调度线程的一组数据,也绝对不能保证它会提高一个又一个的速度。在大多数情况下,运行的是什么每次都会是一个长期而艰巨的优化他们想要做一个新的版本将不值得为开发者,除非也许是计算量大的努力(其中计划有可能被手动调整,并没有写的java反正)。

我会说一个自我学习的线程调度是一个不错的主意,但你不能把它作为一个经典的优化问题在这里。您可能需要确保您的调度顺序将保持最佳的(不太可能),或者找到一个优化方法在运行时的作品。这里的问题可能是,它不会花费太多您的调度摧毁任何性能增益你可能得到的开销。

我觉得这是一个有些主观的问题,但总体上没有,不认为它会工作。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top