/** * Praticar 3 — Sequencial × concorrente. * * npx tsx praticar/03-sequencial-concorrente.ts */ import { buscarLivro, contarEmprestimosAbertos, cronometro } from '../src/biblioteca.js'; // TODO 1: `relatorio(ids: number[])` deve devolver, para cada id, o título do // livro e o total de empréstimos em aberto. Escreva primeiro a versão // ingênua: um laço com dois `await` dentro. Meça com `cronometro()`. // Regra: confirme que o livro existe antes de contar seus empréstimos. // TODO 2: processe fichas concorrentemente, preservando essa ordem interna. Marque em // comentário qual par de chamadas tem dependência REAL e qual não tem. // TODO 3: meça as duas versões e escreva a diferença em milissegundos. // Confira se o ganho bate com a soma dos tempos que você economizou. // TODO 4: com 40 ids em vez de 4, a versão concorrente abre 40 buscas ao mesmo // tempo. Explique em duas linhas por que isso pode ser pior do que a versão // sequencial — e qual é o padrão que resolve (arquivo 09 de `src/`). const marcar = cronometro(); void buscarLivro(1).then(async (livro) => { const total = await contarEmprestimosAbertos(livro.id); marcar(`exemplo de partida: ${livro.titulo} — ${total} em aberto`); });