2009-05-11 13 views
5

A volte sento l'argomento contro il fare le cose sul lato client usando javascript. Le persone dicono cose come "JavaScript è inefficiente ... o lento". Mi chiedo se ci siano fatti reali a sostegno di questa conclusione?Quanto è efficiente javascript?

+5

"lento" o "inefficiente" rispetto a quale altro linguaggio di scripting lato client? – Joseph

+3

"Inefficiente" e "lento" sono termini altamente soggettivi, perché sollevano le domande, troppo inefficienti o lente per chi? In confronto a cosa? –

risposta

12

Ci sono due fattori per le prestazioni JavaScript:

  1. vostro codice
  2. Il motore di script in esecuzione il codice

Il codice è il fattore più semplice da risolvere. Man mano che sviluppi, ottimizza il tuo codice nel miglior modo possibile. Facile.

Il secondo non è sempre così facile. Ho avuto alcune applicazioni in cui le prestazioni su un browser erano eccellenti e un altro era più lento del fango. Altri funzionano alla grande su tutta la linea. Il meglio che puoi fare è testare, testare, testare e testare di nuovo. Se volete un buon articolo, controllare il link:

Coding Horror: The Great Browser JavaScript Showdown

+0

che è un ottimo post di jeff atwood. Grazie. –

+6

Tre fattori! Il browser è il terzo e di solito il più lento. Ricorda che il DOM non fa parte di Javascript, ma del browser. – svinto

2

Questo dipende molto dal motore javascript del browser.

Su tutti, è un linguaggio di scripting, quindi non funziona come C++ o un altro linguaggio compilato. Tuttavia, è buono a ciò a cui è destinato, e questo è guidare le pagine web.

0

Beh, dipende. A cosa stai confrontando? Differisce molto tra i vari browser.

Può essere davvero ben funzionante, o il contrario, a seconda del codice scritto.

È necessario utilizzare JavaScript per fare alcune cose, come ad esempio la manipolazione del dom.

0

Immagino che nella maggior parte dei casi sia molto più veloce di un post!

+0

Se hai intenzione di votare per difetto, spiegane perché! – stevehipwell

0

Direi che è una risposta errata. Come misureresti le prestazioni di JavaScript e che useresti per il confronto. Suppongo che finché JavaScript è l'unica opzione per la programmazione web lato client (non sto parlando di VBScript) non si può davvero dire nulla riguardo la sua efficienza.

+0

Sì, è possibile determinare se è meglio inviare l'elaborazione al client o al server. Puoi anche determinare cosa tenere e cosa tagliare, alcune cose semplicemente non possono essere fatte in ie6 a qualsiasi velocità. – garrow

+0

Probabilmente ho frainteso la domanda. Stavo pensando che l'uso di JavaScript è efficiente a tutti. E sì, hai completamente ragione, ci sono varie preoccupazioni riguardo la logica esatta di produrre calcoli diversi. Come regola generale, la logica dovrebbe essere divisa come segue: "Non ci dovrebbe essere alcuna logica di business al front end". Lo scopo principale di JavaScript è quello di rendere le cose dall'aspetto dinamico e migliorare l'esperienza dell'utente. E sono ancora dubbi su come misurare l'efficacia di JavaScript su questo. –

0

Dipende anche da come si scrive il codice. Se segui le best practice va bene e come detto prima, è meglio dei postback!

0

si può solo davvero rispondere a questa domanda nel contesto di un problema specifico si sta cercando di risolvere. Pubblica un esempio e poi possiamo discutere del merito di varie tecnologie ...

0

Javascript non è inefficiente, l'efficienza non dipende dalla lingua. Gli interpreti potrebbero essere inefficienti. Ad esempio, l'interprete di Firefox funziona molto lentamente in FF per Linux e molto meglio in FF per Windows. Chrome ha implementato un interprete che è molto più veloce. Esistono interpreti Javascript che non vengono eseguiti in un browser, in genere sono più veloci.

1

Javascript è FAST se lo usi correttamente. Altrimenti si comporta male. Ad esempio: un loop illimitato può bloccare il browser.(Ma il browser ti chiederà se interrompere l'esecuzione)

+0

lol, um, non è così che TUTTO è? se un programma C++ ha un loop illimitato, il sistema operativo ti chiederà se vuoi uccidere il programma. –

+1

@Darren: se un'applicazione C++ (o qualsiasi altra app desktop) ha un ciclo illimitato (di solito chiamato "infinito", no?), Il sistema operativo ti chiederà solo di ucciderlo se in qualche modo si comporta in modo anomalo. Di solito questo significa che non risponde ai segnali. Se non viene inviato alcun segnale (incluso alcun tipo di segnale ping), il programma verrà eseguito per sempre senza interruzioni. Non così con JS in un browser. – rmeador

1

La scelta di quali attività eseguire sul client rispetto al server è importante e l'efficienza di JavaScript come lingua non è l'unico fattore che deve essere considerato.

I dati che verranno manipolati sul client devono essere trasmessi al client. Se lo script non ha bisogno di tutte le informazioni che verranno inviate al client, allora il tempo di caricamento della pagina ne risentirà e l'operazione di filtraggio verrà eseguita sulla parte meno efficiente del link (ovvero pagherai per la rete tempo di trasmissione prima che l'utente ottenga le proprie informazioni).

Le regole aziendali eseguite sul client saranno esposte agli utenti curiosi.

Le regole di business di convalida eseguite sul client devono essere eseguite di nuovo sul server, poiché non è possibile affidarsi al codice in esecuzione in un ambiente che non si controlla.

I diversi browser e persino tra le implementazioni ECMAScript disponibili all'interno di una determinata famiglia di browser rendono questa domanda nettamente soggettiva e soggetta a molte variazioni.

0

Immagino che cosa le persone stanno cercando di dirti è: fai quello che puoi sul server, invece di mettere tutto il codice sul lato client.

Le prestazioni Javascript variano da un browser a un altro (o da un interprete a un altro), ma javascript non deve avere gli stessi scopi dei linguaggi sul lato server.

+0

Flávio, un modo migliore per dire cosa intendi è utilizzare JS per la logica dell'interfaccia utente, non per la logica aziendale. Combina questo con AJAX come consumatore dei tuoi servizi web e hai la pozione giusta per un'app performante –

0

Sono un "ragazzo di numeri", quindi quando qualcuno dice cose come "ben X è lento" o "ovviamente, perché Y è veloce" che fa davvero la mia capra. Così, per cominciare, è necessario utilizzare i dati reali, se avete intenzione di fare qualsiasi tipo di valutazione:

JavaScript Performance Rundown

penso anche a guardare Dromaeo in azione è un pò freddo

0

Browser moderni stanno implementando più e più compilazioni just-in-time per i loro interpreti.

La mia regola empirica è che se non si può fare affidamento sull'attivazione di JavaScript, fare quanto più possibile sul server. Se sei assolutamente a conoscenza del fatto che JavaScript è attivo, fai tutto il possibile nel client e risparmierai larghezza di banda e carico del server.