internal/graphicscommand: add a debug.IsDebug check before splitting strings (#3134)

Since `debug.IsDebug` is a constant, by putting the `strings.Cut` calls inside the check this makes the
`(*commandqueue).flush` method faster when Ebitengine is compiled without the debug build tag.

Without the if `debug.IsDebug` check, unnecessary allocations occur (since the logger is a noop logger when debug is
disabled).
This commit is contained in:
Gabriel Ochsenhofer 2024-10-18 10:46:28 -03:00 committed by GitHub
parent 0ec2c4bfd0
commit 2ad0e9a9db
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -305,6 +305,7 @@ func (q *commandQueue) flush(graphicsDriver graphicsdriver.Graphics, endFrame bo
if err := c.Exec(q, graphicsDriver, indexOffset); err != nil {
return err
}
if debug.IsDebug {
str := c.String()
for {
head, tail, ok := strings.Cut(str, "\n")
@ -314,6 +315,7 @@ func (q *commandQueue) flush(graphicsDriver graphicsdriver.Graphics, endFrame bo
}
str = tail
}
}
// TODO: indexOffset should be reset if the command type is different
// from the previous one. This fix is needed when another drawing command is
// introduced than drawTrianglesCommand.