【发布时间】:2017-08-23 05:29:54
【问题描述】:
我尝试在 Java 中实现光线追踪器,一切正常。 有一次,我正在渲染一个场景,并检查了我的程序的 CPU-Usage。 每个虚拟内核都在使用,但总体 CPU 使用率约为 22-23%
我知道当我使用 Cinema4D 渲染某些东西时,每个虚拟内核都被 100% 使用。
我该如何存档?它会让我的光线追踪器运行速度快 4 倍吗? (23% -> 100%)
【问题讨论】:
-
从技术上讲,您可以用无用的循环燃烧代码淹没您的系统,并使您的 CPU 使用率达到 100%。在此之后不会更快地工作。请注意,CPU 使用率并不意味着您的程序运行得更快或更好。
-
但是例如:我的电脑上有 8 个虚拟内核。我可以创建 8 个线程并将它们的优先级设置为极高,并让每个线程计算每个像素的像素吗?
-
这取决于您使用的算法。某些类型的计算并行工作比其他类型更好。如果你不能在你的光线追踪算法中隔离
n计算块,它们是相互独立的,那么你的块之间需要的同步可能会耗尽你所有的CPU性能,尽管消耗更多的内存和CPU,你的应用程序会运行得更慢。 -
Re,“......并将他们的优先级设置为极高......”这不是优先级的目的。将优先级设置得更高不会增加可用周期数。
-
那它有什么用呢?据此:technet.microsoft.com/en-us/library/cc940378.aspx 我的线程获得了更多的处理器时间,这增加了周期数,对吧?
标签: java raytracing