Почему захват металлического каркаса «GPU time» полностью отличается от других методов ⇐ IOS
Почему захват металлического каркаса «GPU time» полностью отличается от других методов
Существует множество способов узнать, сколько графического времени требуется на один кадр.
[*]Навигатор отладки Xcode > Частота кадров > Время кадра > Графический процессор [*]Metal Performance HUD > Графический процессор [*]Измерение вручную с помощью
commandBuffer.addCompletedHandler {буфер в пусть gpuTime = buffer.gpuEndTime - buffer.gpuStartTime } Все эти три метода показывают одинаковые цифры. Но Metal Frame Capture также показывает GPU Time, и это совершенно другое.
Я запускаю Metal Frame Capture программно для области одного кадра, поэтому он должен измерять тот же рабочий процесс.
override func draw(_ rect: CGRect) { пусть captureDescriptor = MTLCaptureDescriptor() captureDescriptor.captureObject = устройство пытаться! MTLCaptureManager.shared().startCapture(с: captureDescriptor) // код кадра MTLCaptureManager.shared().stopCapture() } Но когда все другие методы показывают 14,2 мс, Metal Frame Capture показывает 7,81 мс с состоянием индуцированной производительности, 5,48 мс с максимальным, code>9,48 мс со средним значением и 18,06 с минимальным.
Таким образом, ни при одном из показателей производительности оно даже отдаленно не напоминает число, показанное в другом месте.
Разве мы не должны думать о времени графического процессора, отображаемом в Metal Frame Capture, как об одном и том же, и сравнивать его только с другими временами графического процессора в самом Metal Frame Capture?
Думаю, для сравнения с целевым значением 16,6 мс следует использовать первые 3 метода. С другой стороны, захват кадров графического процессора не следует использовать для сравнения с конкретным целевым временем графического процессора, но он больше подходит для относительно детального сравнения результатов оптимизации?
Существует множество способов узнать, сколько графического времени требуется на один кадр.
[*]Навигатор отладки Xcode > Частота кадров > Время кадра > Графический процессор [*]Metal Performance HUD > Графический процессор [*]Измерение вручную с помощью
commandBuffer.addCompletedHandler {буфер в пусть gpuTime = buffer.gpuEndTime - buffer.gpuStartTime } Все эти три метода показывают одинаковые цифры. Но Metal Frame Capture также показывает GPU Time, и это совершенно другое.
Я запускаю Metal Frame Capture программно для области одного кадра, поэтому он должен измерять тот же рабочий процесс.
override func draw(_ rect: CGRect) { пусть captureDescriptor = MTLCaptureDescriptor() captureDescriptor.captureObject = устройство пытаться! MTLCaptureManager.shared().startCapture(с: captureDescriptor) // код кадра MTLCaptureManager.shared().stopCapture() } Но когда все другие методы показывают 14,2 мс, Metal Frame Capture показывает 7,81 мс с состоянием индуцированной производительности, 5,48 мс с максимальным, code>9,48 мс со средним значением и 18,06 с минимальным.
Таким образом, ни при одном из показателей производительности оно даже отдаленно не напоминает число, показанное в другом месте.
Разве мы не должны думать о времени графического процессора, отображаемом в Metal Frame Capture, как об одном и том же, и сравнивать его только с другими временами графического процессора в самом Metal Frame Capture?
Думаю, для сравнения с целевым значением 16,6 мс следует использовать первые 3 метода. С другой стороны, захват кадров графического процессора не следует использовать для сравнения с конкретным целевым временем графического процессора, но он больше подходит для относительно детального сравнения результатов оптимизации?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение