2013-10-22 15 views
6

Desidero utilizzare il codice assembly per gestire alcune attività critiche relative alle prestazioni con PHP. Come posso fare questo? Ho cercato prima ma niente di niente.Come incorporare il codice assembly in php?

+0

Codice di assemblaggio? PHP è un linguaggio interpretato. Maggiori informazioni qui: http://stackoverflow.com/questions/1514676/is-php-compiled-or-interpreted – H2ONOCK

+1

No. Non vuoi davvero farlo. Inoltre, ** non puoi **. Se hai bisogno di prestazioni, progetta un'architettura adeguata nella tua piattaforma. Utilizzare i servizi interni per le attività critiche e lasciare che PHP gestisca le richieste del cliente. – opalenzuela

+3

[È impossibile.] (Http://stackoverflow.com/questions/10761931/is-possible-to-include-an-assembly-code-to-php-script) – wens

risposta

4

Credo che stiate parlando di estendere PHP.

È possibile farlo creando estensioni personalizzate in linguaggio c. Un semplice tutorial su come fare che tu trovi here

+0

Grazie! Un nuovo modo per me. –

+0

@Udan: Nel mio caso, mi piacerebbe creare un programma php per una compilazione arbitraria just in time, esiste un'alternativa per chiamare gcc? Non ci sono davvero equivalenti della funzione ctype di Python che permette di dlopen() qualsiasi file oggetto condiviso? – user2284570

+0

dai un'occhiata a questa domanda http://softwareengineering.stackexchange.com/questions/29344/jit-compiler-for-c-c-and-the-likes. Sono sicuro che sarete in grado di trovare un modo intelligente per utilizzare un compilatore JIT all'interno di un'estensione php se ne avete davvero bisogno. – Udan

1

Usare il montaggio per i tuoi problemi di prestazioni è come usare un martello per aprire una diga, mentre probabilmente c'è una leva da qualche parte, che apre la diga. Meglio guardare prima la struttura e vedere perché quelle attività critiche hanno problemi di prestazioni e vedere se è possibile modificare la struttura.

Oltre a ciò, come PHP è un linguaggio di scripting che viene interpretato in fase di esecuzione, riscrivere il codice in C, come nell'esempio da Udan dà il 90% della spinta di prestazioni, riscrivere il codice C per il montaggio potrebbe aggiungere un po ' extra 10%, ma impiegherà il 90% delle volte.

D'altra parte, l'argomento che stai usando assembly nel tuo codice ti dà alcuni diritti di sfogo, solo fino a quando un altro programmatore guarda il tuo codice, lo ristruttura dando un incremento delle prestazioni del 50% e ignora completamente il tuo assembly .

+0

-1: utilizzare l'assembly per lo sviluppo Web è possibile e semplice. E il guadagno in termini di prestazioni è molto superiore al 10%. L'analogia del 10%/90% è influenzata dall'opinione pubblica. – johnfound

+0

+1. In termini di aumento delle prestazioni per ora di codifica, per le attività più complesse di "Hello world", C batte l'assemblaggio ogni giorno. E questo sta scontando i costi di manutenzione. –