A inteligência artificial está transformando a forma como desenvolvemos software. Hoje é possível gerar um CRUD completo em poucos minutos utilizando ferramentas como ChatGPT, Claude, Gemini e outras plataformas de IA.
Nesse contexto surge uma pergunta estratégica: qual stack tecnológica consome menos tokens e entrega maior produtividade na geração de código?
Essa questão importa porque o consumo de tokens impacta diretamente o custo de utilização da IA, a velocidade de geração, a clareza das respostas, a facilidade de manutenção e a quantidade de contexto disponível para regras de negócio.
O que são tokens
Tokens são as unidades de texto processadas pelos modelos de linguagem. Cada modelo possui um orçamento finito de tokens por requisição, e tudo que ele lê ou produz consome desse orçamento.
- Palavras inteiras ou fragmentos de palavras.
- Símbolos e pontuações.
- Trechos de código fonte, com nomes de variáveis, tipos e estruturas.
- Espaços, quebras de linha e indentação.
Quanto mais extenso e verboso for o código, maior será o consumo de tokens. Frameworks que exigem muito boilerplate ou decoradores extensos drenam o orçamento antes mesmo da regra de negócio aparecer.
Por que isso importa
Ao desenvolver aplicações com apoio de IA, parte do orçamento de tokens é consumida pela estrutura do próprio código. Stacks mais enxutas oferecem vantagens diretas para o time de engenharia.
- Menor custo operacional em chamadas para a API do modelo.
- Respostas mais rápidas, porque o contexto enviado é menor.
- Menor necessidade de dividir prompts em várias etapas.
- Mais espaço para descrever regras de negócio e requisitos específicos.
“Quanto menos tokens a infraestrutura consome, mais tokens sobram para o que realmente gera valor para o negócio.”
Metodologia do benchmark
Para tornar a comparação justa, definimos um cenário padrão que qualquer stack precisa entregar: um CRUD completo para a entidade Customer, com regras de negócio explícitas e endpoints REST padronizados.
A entidade Customer possui os seguintes campos:
- id
- name
- document
- phone
- status
- created_at
- updated_at
Os endpoints REST esperados são:
- POST /customers, cria um novo cliente.
- GET /customers, lista clientes com paginação.
- GET /customers/:id, recupera um cliente específico.
- PUT /customers/:id, atualiza dados do cliente.
- DELETE /customers/:id, remove o cliente.
As regras de negócio que cada implementação precisa garantir:
- O campo name é obrigatório.
- O email deve ser único entre os clientes.
- O document deve ser único entre os clientes.
- O status aceita apenas os valores active ou inactive.
- A listagem retorna resultados paginados.
- Erros são padronizados em respostas JSON.
Stacks avaliadas
- PHP com Laravel.
- Bun com Elysia e Drizzle.
- Bun com Hono e Drizzle.
- Go com Fiber e Ent.
- Go com Gin e GORM.
- TypeScript com NestJS e Prisma.
Para cada stack acompanhamos os mesmos critérios de avaliação:
- Total de tokens consumidos na geração.
- Linhas de código produzidas.
- Quantidade de arquivos gerados.
- Tempo de implementação até o primeiro deploy local.
- Número de ajustes necessários após a primeira execução.
- Complexidade de manutenção a longo prazo.
Resultado esperado
Antes de rodar o benchmark na prática, vale registrar a hipótese de ranqueamento baseada em experiência de uso real de IA para geração de código:
- 1. Bun com Elysia e Drizzle, excelente equilíbrio entre concisão e tipagem.
- 2. PHP com Laravel, altíssima produtividade e maturidade.
- 3. Bun com Hono e Drizzle, estrutura enxuta e simples.
- 4. Go com Fiber e Ent, forte na geração de código a partir de schema.
- 5. Go com Gin e GORM, boa produtividade, porém mais verboso.
- 6. TypeScript com NestJS e Prisma, arquitetura robusta, mas mais detalhada.
Laravel: o benchmark clássico
O Laravel continua sendo uma referência em produtividade no mundo PHP. Uma única linha cria todas as rotas REST de um recurso, e o ecossistema entrega praticamente tudo que um CRUD precisa: validação, migrações, ORM, autenticação e testes.
- Convenções maduras que reduzem decisões repetitivas.
- CLI poderosa para gerar controllers, models e migrations.
- Eloquent como ORM robusto e expressivo.
- Grande ecossistema com pacotes consolidados.
Bun com Elysia e Drizzle: o novo concorrente
O Bun combina um runtime moderno com suporte nativo a TypeScript. O Elysia oferece uma API extremamente concisa para definir rotas e validações, e o Drizzle mantém o acesso ao banco tipado, leve e próximo ao SQL.
- Código enxuto, com poucas linhas para expor uma rota completa.
- Excelente inferência de tipos de ponta a ponta.
- Alta performance no runtime do Bun.
- Baixo overhead de boilerplate e decoradores.
Go com Ent: produtividade com geração de código
O Go tradicionalmente é mais explícito que linguagens dinâmicas, mas o Ent reduz significativamente o boilerplate. Ao definir o schema da entidade, grande parte das operações de CRUD é gerada automaticamente, com tipos fortes e queries seguras.
Isso aproxima o Go da produtividade de frameworks mais opinativos, sem abrir mão de binários simples e alta performance em produção.
NestJS com Prisma: arquitetura corporativa
O NestJS é excelente para sistemas complexos e times grandes. Decoradores, módulos e injeção de dependência criam uma arquitetura previsível, ainda que à custa de mais tokens por arquivo gerado.
- Arquitetura consistente entre módulos e features.
- Separação clara de responsabilidades entre controllers, services e repositories.
- Forte aderência a padrões corporativos e DDD.
- Ecossistema maduro de integrações e testes.
O papel do framework
A linguagem é apenas parte da equação. O maior impacto no consumo de tokens está em decisões do framework escolhido.
- Convenções que evitam reescrever a mesma estrutura a cada feature.
- Geração automática de código a partir de schemas ou definições.
- Nível de abstração escolhido para encapsular regras comuns.
- Verbosidade exigida pela arquitetura de referência do framework.
Em muitos casos, o framework influencia mais o orçamento de tokens do que a linguagem em si. Trocar de framework dentro da mesma linguagem pode reduzir o consumo pela metade.
O que a Anthropic diz sobre isso
Esse raciocínio não é apenas opinião de quem usa IA no dia a dia. Em artigo recente sobre Claude Code em grandes bases de código, a própria Anthropic reforça que o entorno do modelo importa mais do que o modelo isolado.
“O ecossistema construído ao redor do modelo, o harness, determina o desempenho do Claude Code mais do que o modelo sozinho.”
Traduzindo para o debate de stacks: o framework, suas convenções, o ORM escolhido e a arquitetura padrão funcionam como o harness do modelo. É essa camada que decide se a IA gasta tokens entendendo a estrutura ou avançando na regra de negócio.
“A capacidade do Claude de ajudar em uma base de código grande é limitada pela sua capacidade de encontrar o contexto certo.”
Stacks enxutas como Bun com Elysia e Drizzle entregam essa legibilidade de forma natural: poucos arquivos, tipos inferidos e baixa indireção. Frameworks mais opinativos compensam com convenções fortes, mas o preço é pago em tokens por arquivo.
“Contexto demais carregado em cada sessão degrada a performance; contexto de menos deixa o Claude navegando às cegas.”
O ponto é direto: existe um equilíbrio. Stacks que minimizam o ruído estrutural deixam mais espaço para o que importa, sem cair no extremo oposto de exigir contexto adicional a cada prompt.
Qual stack escolher
A escolha depende de qual prioridade está no topo do projeto. Algumas combinações funcionam melhor em determinados cenários.
- Prioridade em menor consumo de tokens: Bun com Elysia e Drizzle, seguido de Laravel.
- Prioridade em produtividade e maturidade: Laravel.
- Prioridade em type safety moderno: Bun com Elysia e Drizzle.
- Prioridade em performance e binários simples: Go com Fiber e Ent.
- Prioridade em arquitetura corporativa: NestJS com Prisma.
Minha recomendação
Para a maioria dos projetos de negócio, a recomendação é adotar Bun com Elysia e Drizzle como stack moderna e extremamente eficiente no uso de tokens. A combinação entrega tipagem forte, baixo boilerplate e performance suficiente para a grande maioria dos cenários.
Se o objetivo for máxima produtividade com um ecossistema consolidado e bibliotecas para praticamente qualquer integração, o Laravel segue como uma escolha excepcional.
Conclusão
Ao utilizar IA para desenvolvimento, o consumo de tokens passa a ser um fator estratégico, não apenas um detalhe técnico. Stacks mais concisas reduzem custo, aceleram a geração, simplificam iterações e liberam contexto para regras de negócio.
“A melhor stack é aquela que maximiza a produtividade do time e permite que a IA concentre esforços na lógica que diferencia o produto.”
Bun com Elysia e Drizzle se destaca por combinar modernidade, tipagem forte, performance e código enxuto. Laravel segue como uma das plataformas mais produtivas e maduras do mercado para times que valorizam convenção sobre configuração.
Limitações desta análise
É honesto reconhecer onde este artigo ainda não fecha o ciclo. A leitura apresentada aqui se sustenta em experiência prática de uso de IA para geração de código, não em medições controladas em laboratório.
- Ainda não temos contagem absoluta de tokens por stack para o mesmo escopo.
- O ranqueamento apresentado é uma hipótese de trabalho, não um resultado fechado.
- Diferenças entre modelos (Claude, GPT, Gemini) podem alterar a ordem em casos específicos.
- Custo total de propriedade depende também de talento disponível, suporte do ecossistema e custos operacionais fora da geração de código.
O próprio material da Anthropic sobre Claude Code em grandes bases reconhece um ponto parecido: as recomendações são qualitativas, sem números absolutos de tokens consumidos ou custo por tarefa. É exatamente essa lacuna que o próximo passo deste benchmark pretende preencher.
Próximos passos
Em um próximo artigo pretendo executar esse benchmark na prática e apresentar métricas reais de cada stack.
- Tokens consumidos por arquivo e por iteração.
- Linhas de código geradas para o mesmo escopo funcional.
- Tempo de geração até o primeiro deploy local.
- Performance em testes de carga simples.
- Facilidade de manutenção e evolução do CRUD.
Se você também está utilizando IA para acelerar o desenvolvimento, essa comparação pode ajudar a escolher uma stack mais eficiente e alinhada à estratégia tecnológica do seu produto.
