Posso usare partial come voglio o devo trattenermi per evitare di portare le mie viste a una scansione con molto traffico?Sta chiamando un'operazione parziale costosa?
risposta
C'è un overhead ovvio usando partial ma questo non è qualcosa di cui dovresti probabilmente preoccuparti.
I partial sono file. Quando si esegue il rendering di un'azione senza partial, l'azione "costa" 1 file (che non è completamente vero, ma per semplificare la spiegazione). Se l'azione esegue il rendering di 4 partials, si ottiene un costo di 5. Ciò significa che sono disponibili 4 ulteriori chiamate IO e il costo reale per ogni chiamata dipende dal carico del server, dalle prestazioni del server e così via.
Ma questo costo è importante? Nella mia esperienza, per il 99% delle volte no. Inoltre, vale la pena scegliere i vantaggi dell'utilizzo di partial in termini di leggibilità e manutenibilità del codice.
Se le prestazioni devono essere una caratteristica chiave, probabilmente dovresti cercare velocità e miglioramenti altrove.
Ricorda: Ruby non è un linguaggio di programmazione superveloce e l'espressività del codice ha sempre preso il primo posto a favore delle performance. Rails accetta implicitamente questa convenzione, anche se il team Rails si è sempre concentrato sulle prestazioni (e Rails 3 è la dimostrazione pratica c'è sempre spazio per miglioramenti)
Detto questo, puoi tranquillamente usare partial e ridurre l'overhead dell'applicazione con un po 'di intelligenza meccanismo di caching. Ad esempio, puoi posizionare il rendering della raccolta all'interno di un blocco cache
in modo che un'istruzione della raccolta di rendering venga eseguita solo una volta, quindi l'app carica semplicemente 1 file cache anziché 10 parziali non memorizzati nella cache.
Uno degli errori più insoliti che ho fatto molte volte all'inizio era di preoccuparmi delle prestazioni nel modo sbagliato, detto, senza effettivamente eseguire benchmark. Ricordo una volta quando stavo tentando di eliminare una singola query di database a favore di un hash codificato perché "la query costa", senza rendersi conto che c'era un'altra query stupida che stava caricando un'intera raccolta di tabelle senza l'istruzione include, che aveva come risultato eseguire la seconda query 3 volte più lentamente.
Quindi, se davvero ti interessano le prestazioni, probabilmente non dovresti evitare l'uso di partial ma invece assicurati di sfruttare tutte le altre funzionalità che Rails ti offre per ridimensionare la tua applicazione.
questa è la risposta –
- 1. sta lanciando un'operazione costosa?
- 2. popviewcontroller non sta chiamando viewWillAppear
- 3. Sta chiamando MemoryStream.ToArray() pericoloso dopo lo smaltimento?
- 4. metodo di risposta productsRequest non sta chiamando
- 5. Quale SUB sta chiamando questo SUB
- 6. conosce troppo i metodi che sta chiamando
- 7. Sta chiamando - [NSRunLoop runUntilDate:] una buona idea?
- 8. Python multiprocessing Pool.map sta chiamando aquire?
- 9. DbContext è un'operazione costosa?
- 10. Il clic sta chiamando la funzione due volte sul backbone
- 11. Chi sta chiamando il metodo paintComponent() nella mia classe?
- 12. Dillo FxCop un altro metodo sta chiamando smaltire
- 13. Non sta chiamando `lista <T> :: end()` inefficiente?
- 14. Sta chiamando metodi statici tramite un oggetto "cattivo formato"? Perché?
- 15. JSON.Net non sta chiamando CanConvert per l'articolo da collezione?
- 16. In che modo i generatori Python sanno chi sta chiamando?
- 17. boost :: make_shared non sta chiamando l'operatore (posizionamento) nuovo?
- 18. Sta chiamando setTimeout con un ritardo negativo ok?
- 19. sta chiamando printf con argomenti in eccesso un comportamento indefinito?
- 20. File. Esiste un'operazione costosa?
- 21. Quanto la memoria è costosa sta scrivendo i dati in AddressBook e CoreData?
- 22. Context.getSystemService() è una chiamata costosa?
- 23. Perché l'impaginazione è così costosa?
- 24. SQLite è la dichiarazione CASE costosa?
- 25. Manutenzione costosa con dati di test automatizzati
- 26. SQLite cursor.getCount operazione costosa in Android
- 27. Stat() è una chiamata di sistema costosa?
- 28. Il modello parziale di rails utilizzando un gestore personalizzato sta sfuggendo a html
- 29. Sta chiamando `System.gc()` un buon modo per gestire la memoria in un'applicazione Java?
- 30. sta chiamando libgdx SpriteBatch begin and end method più volte costoso?
C'è ovviamente un sovraccarico, ma tutto ciò che ho visto è a favore dell'astrazione con partial. Non vedo l'ora che le persone che sanno quello che stanno facendo rispondendo a questo. +1 per una grande domanda. –
In generale, direi "usa quanto vuoi". Ma dipende davvero da quanto tempo ci vuole per rendere i tuoi particolari parziali. Se inserisci il tuo log di sviluppo ('tail -f log/development.log') e carichi una pagina, vedrai quanto tempo ci vuole per renderizzare ogni partial. Se uno o più file è lento, trovare un modo per velocizzarlo o memorizzarlo nella cache. Altrimenti, nessun problema. –