Java Raytracer увеличить использование процессора
Я попытался реализовать raytracer в Java, и все работает нормально. Однажды я рендерил сцену и проверил использование CPU моей программой. Каждое виртуальное ядро использовалось, но общее использование ЦП составляло около 22-23%.
Я знаю, что когда я что-то рендерил с Cinema4D, каждое виртуальное ядро использовалось на 100%.
Как я мог заархивировать это? Это заставит мой raytracer работать в 4 раза быстрее? (23% -> 100%)
1 ответ
Вы определенно должны иметь возможность использовать процессор на 100%, а при прочих равных условиях это должно привести к более высокой скорости рендеринга. То, что вы, очевидно, не на 100%, указывает мне, что вы либо не создаете достаточно потоков, либо ваши потоки блокируют что-то.
Я обнаружил, что самое приятное - это один поток рендеринга на виртуальное ядро. Вы можете использовать API для определения количества ядер, доступных во время выполнения, и порождать столько потоков рендеринга. Для примера, смотрите мой трассировщик java ray.
Каждое виртуальное ядро использовалось, но общее использование ЦП составляло около 22-23%.
Я не уверен, что вы подразумеваете под этим, но вы, возможно, захотите углубиться в это, используя профилировщик производительности, чтобы лучше понять, как ваши потоки используют процессор. В идеале вы хотите, чтобы каждый из ваших потоков работал все время. Я использую VisualVM для визуализации потоков процесса.