Skip to content

Abertura a frio do teclado: para onde vai o tempo no emulador, e a comparação com o Gboard corrigida - #10

Merged
yan-vidal merged 1 commit into
mainfrom
docs/abertura-a-frio
Oct 11, 2026
Merged

yan-vidal merged 1 commit into
mainfrom
docs/abertura-a-frio

Conversation

@yan-vidal

Copy link
Copy Markdown
Contributor

Análise dos traces do Perfetto guardados pelo OpeningBenchmarks (20 voltas no emulador com a CPU limitada como o CI) e de um trace do sistema do Gboard.

O que os traces mostram

Do ~1 s do 1º quadro do teclado a frio no emulador:

Parte Tempo
Criar o contexto gráfico (Creating EGLContext, só chamadas rc… encode do emulador) 300–600 ms
Compilar ~10 programas de GPU no 1º desenho (shader_compile, sempre cache_miss) 60–900 ms
Esperar o buffer da janela ~110 ms
Nosso código na thread principal 20–65 ms

A GPU do emulador (ANGLE sobre SwiftShader) não tem GL_OES_get_program_binary: o Android não consegue guardar os programas compilados (code_cache/ vazio, o do Gboard também) e todo processo novo recompila tudo. O Gboard paga o mesmo contexto gráfico (302–318 ms).

Correção

TESTING.md dizia "KeyFlow 6/8 aberturas em transição, Gboard 1/8". A comparação estava errada: com 4 s de observação o Gboard a frio, que leva 3,8 s para aparecer, quase não era amostrado. Medido com 12 s e o app compilado: KeyFlow visível em 2,0 s e no lugar de vez em 2,9 s; Gboard 3,8 s e 4,0 s. A transição que sobra no KeyFlow vem do tipo de janela (altura do teclado, redimensionada depois de aparecer; a do Gboard tem a altura da tela desde o início).

scripts/ime-placement.py agora mostra em quantos segundos o teclado fica visível e no lugar de vez, avisa quando ele nem apareceu na janela de observação e repete o ime set depois do force-stop.

Só script de medição e documentação: nenhum código do app nem de teste muda.

… a comparação com o Gboard corrigida

Traces do Perfetto do OpeningBenchmarks (20 voltas) e do Gboard: o 1º quadro do teclado a frio
gasta 300–600 ms criando o contexto gráfico e 60–900 ms compilando ~10 programas de GPU, que a
GPU emulada (ANGLE sobre SwiftShader, sem GL_OES_get_program_binary) não deixa o Android
guardar — todo processo novo recompila, o do Gboard também. O nosso código soma 20–65 ms.

A comparação "KeyFlow 6/8 × Gboard 1/8 aberturas em transição" estava errada: com 4 s de
observação o Gboard a frio (3,8 s para aparecer) quase não era amostrado. O ime-placement.py
agora diz em quantos segundos o teclado fica visível e no lugar de vez, avisa quando ele nem
apareceu e repete o ime set depois do force-stop. Medido certo: KeyFlow 2,0 s / 2,9 s, Gboard
3,8 s / 4,0 s; a transição que sobra no KeyFlow vem do tipo de janela (altura do teclado,
redimensionada depois de aparecer), não de lentidão.
@yan-vidal
yan-vidal merged commit f6cdb5e into main Oct 11, 2026
7 checks passed
@yan-vidal
yan-vidal deleted the docs/abertura-a-frio branch October 11, 2026 01:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant