Horse no Linux com MoonCompiler: o mesmo código Delphi e resultados sob carga pesada #557
Moonbot-Tech
started this conversation in
Show and tell
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Usamos o Horse como workload real de servidor para o MoonCompiler — um toolchain que permite compilar código Delphi moderno para Win64 e Linux x86-64.
Primeiro compilamos a mesma aplicação Horse de três formas:
Todas as variantes usaram o mesmo código-fonte do Horse e da aplicação, o mesmo workload e a mesma configuração de rede. As respostas das verificações funcionais foram idênticas.
No workload do order book, as builds com MoonCompiler ficaram cerca de 27–32% mais rápidas que o FPC. Nos cenários com forte pressão de memória, o MM incluído trouxe ganhos de 2,6 a 5,9 vezes contra o mesmo MoonCompiler usando o MM padrão do FPC. O caminho mínimo de
/pingficou próximo da paridade; portanto, não estamos apresentando o MM como uma vantagem universal em toda micro-operação.Também verificamos o comportamento perto do limite. Em uma fase deliberadamente destrutiva, criamos conexões mais rápido do que o servidor conseguia encerrá-las. A build MoonCompiler com o MM do produto permaneceu abaixo de 34 MiB de RSS e 53 threads. A build FPC main chegou a aproximadamente 4,7 GiB e 56 mil threads, mas depois se recuperou e encerrou corretamente. Esse não é um cenário normal de produção, e sim um teste específico de resistência.
Durante o trabalho encontramos três erros no tratamento de rotas UTF-8 e nos callbacks do Radix com FPC. As correções e os testes de regressão permanentes estão no PR #556.
Outro resultado prático: a mesma aplicação Horse pode ser compilada com Delphi 12.2 no Windows e com MoonCompiler no Linux, mantendo o modelo Unicode, os tipos e a arquitetura da aplicação.
Links: MoonCompiler 1.0.0 · toolchains prontos · PR para o Horse
Evidências e reprodução
O arquivo abaixo contém o programa Horse completo usado no teste, os scripts de carga, as medições brutas em intervalos de 500 ms e as instruções de reprodução.
Baixar o pacote de evidências e reprodução
SHA-256: 71e49ee5daab7e718b61036e7d4dfaf4b88ca553fa3fb5b2eb289c79fdec34b1Gostaríamos muito de ouvir a opinião dos mantenedores e usuários do Horse sobre os resultados e sobre a possibilidade de incluir o MoonCompiler na documentação de compiladores suportados depois que o PR for revisado.
All reactions