Ho incluso qui la versione in miniatura di questo prompt perché la serie "I miei prompt preferiti" dovrebbe essere compatta, di facile lettura e autonoma. Ma oggi ho trasformato questo in un sistema davvero pazzesco. Non è rilevante se stai creando un altro programma CRUD in React o una lista TODO, ma se stai facendo qualcosa di piuttosto complicato in Rust o Golang, o qualcosa che coinvolge dati complessi, questo approccio è quasi spaventoso per quello che può fare. È un processo in 2 fasi. Ecco la Fase 1: --- Leggi attentamente TUTTI i file AGENTS dot md e README dot md e comprendi TUTTO di entrambi! Poi usa la modalità agente di investigazione del codice per comprendere appieno il codice, l'architettura tecnica e lo scopo del progetto. Poi, una volta che hai fatto un lavoro estremamente approfondito e meticoloso in tutto ciò e hai compreso a fondo l'intero sistema esistente e cosa fa, il suo scopo e come è implementato e come tutti i pezzi si collegano tra loro, ho bisogno che tu indaghi e studi in modo iper-intensivo e rifletta su queste domande in relazione a questo progetto: Ci sono altre gravi inefficienze nel sistema centrale? Luoghi nel codice dove 1) le modifiche sposterebbero effettivamente l'ago in termini di latenza/risposta e throughput complessivi; 2) in modo tale che le nostre modifiche sarebbero provabilmente isomorfe in termini di funzionalità così da sapere per certo che non cambierebbero gli output risultanti dati gli stessi input; 3) dove hai una visione chiara di un approccio ovviamente migliore in termini di algoritmi o strutture dati (nota che per questo puoi includere nelle tue contemplazioni strutture dati meno conosciute e algoritmi più esoterici/sophisticated/matematici, così come modi per riformulare il/i problema/i in modo che un altro paradigma venga esposto, come l'elenco mostrato di seguito (Nota: Prima di proporre qualsiasi ottimizzazione, stabilisci metriche di base (latency p50/p95/p99, throughput, memoria di picco) e cattura profili CPU/allocation/I/O per identificare i veri hotspot): - Eliminazione del pattern di query/fetch N+1 - zero-copy / riutilizzo dei buffer / I/O scatter-gather - costi del formato di serializzazione (overhead di parsing/encoding) - code a dimensione limitata + backpressure (prevenire l'esplosione della memoria e la latenza di coda) - sharding / lock a strisce per ridurre la contesa - memoizzazione con strategie di invalidazione della cache - tecniche di programmazione dinamica - teoria dell'ottimizzazione convessa - valutazione pigra / computazione differita - pattern di iteratore/generatore per evitare di materializzare grandi collezioni - elaborazione in streaming/chunked per lavoro limitato dalla memoria - pre-computazione e tabelle di lookup - lookup basato su indice vs scansione lineare - ricerca binaria (su dati e su spazio di risposta) - tecniche a due puntatori e finestra scorrevole - somme prefisse / aggregati cumulativi...