亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

Jadual Kandungan
JIT PHP 8
Bagaimana kod PHP dilaksanakan
Pelanjutan Opcache
Apakah kesan kompilasi Just In Time?
Jadi, bagaimanakah kompilasi Just In Time berfungsi
Jadi, peningkatan prestasi anda mungkin tidak besar
Rumah pembangunan bahagian belakang PHP8 Pandangan mendalam tentang JIT dalam PHP 8

Pandangan mendalam tentang JIT dalam PHP 8

Apr 25, 2022 pm 08:46 PM
php php8

Artikel ini akan membawa anda memahami JIT dalam PHP 8 dan bercakap tentang cara JIT mengambil bahagian dalam proses tafsiran saya harap ia akan membantu semua orang.

Pandangan mendalam tentang JIT dalam PHP 8

Pengkompil JIT (Just In Time) PHP 8 akan disepadukan ke dalam PHP sebagai sambungan Opcache digunakan untuk menukar opcode tertentu ke dalam arahan cpu pada masa jalan.

Ini bermakna selepas menggunakan JIT, Zend VM tidak perlu mentafsir opcode tertentu dan arahan ini akan dilaksanakan terus sebagai arahan peringkat CPU.

JIT PHP 8

Impak pengkompil PHP 8 Just In Time (JIT) tidak boleh dipertikaikan. Tetapi setakat ini, saya mendapati bahawa sangat sedikit yang diketahui tentang perkara yang JIT sepatutnya lakukan.

Selepas banyak penyelidikan dan berputus asa, saya memutuskan untuk menyemak sendiri kod sumber PHP. Menggabungkan beberapa pengetahuan saya tentang bahasa C dan semua maklumat bertaburan yang saya kumpulkan setakat ini, saya telah menghasilkan artikel ini, yang saya harap akan membantu anda memahami JIT PHP dengan lebih baik.

Ringkasnya: Apabila JIT berfungsi seperti yang diharapkan, kod anda tidak dilaksanakan melalui Zend VM, tetapi secara langsung sebagai satu set arahan peringkat CPU.

Itulah idea keseluruhannya.

Tetapi untuk memahaminya dengan lebih baik kita perlu mempertimbangkan cara php berfungsi secara dalaman. Tidak terlalu rumit, tetapi memerlukan beberapa pengenalan.

Saya menulis catatan blog yang memberikan gambaran umum tentang cara php berfungsi. Jika anda rasa siaran ini terlalu banyak, semak yang lain dan kembali kemudian. Perkara akan menjadi lebih mudah untuk difahami.

Bagaimana kod PHP dilaksanakan

Seperti yang kita sedia maklum, PHP ialah bahasa yang ditafsirkan, tetapi apakah maksud ayat ini?

Setiap kali kod PHP (skrip baris arahan atau aplikasi WEB) dilaksanakan, ia mesti melalui penterjemah PHP. Yang paling biasa digunakan ialah penterjemah PHP-FPM dan CLI.

Tugas jurubahasa adalah mudah: terima kod PHP, tafsirkannya dan kembalikan hasilnya.

Bahasa yang ditafsir secara umum mengikuti proses ini. Sesetengah bahasa mungkin menghapuskan beberapa langkah, tetapi idea umum adalah sama. Dalam PHP, prosesnya adalah seperti berikut:

  • membaca kod PHP dan mentafsirkannya sebagai satu set kata kunci yang dipanggil Token. Proses ini membolehkan penterjemah mengetahui kod yang telah ditulis dalam setiap program. Langkah ini dipanggil Lexing atau Tokenizing.

  • Selepas mendapat koleksi Token, jurubahasa PHP akan cuba menghuraikannya. Pokok sintaks abstrak (AST) dijana melalui proses yang dipanggil Penghuraian. Di sini AST ialah satu set nod yang mewakili operasi yang perlu dilakukan. Sebagai contoh, "gema 1 1" sebenarnya bermaksud "cetak hasil 1 1" atau lebih khusus "cetak operasi, operasi ini ialah 1 1".

  • Dengan AST lebih mudah untuk memahami operasi dan keutamaan. Menukar pepohon sintaks abstrak kepada operasi yang boleh dilaksanakan oleh CPU memerlukan ungkapan peralihan (IR), yang dalam PHP kita panggil Opcodes. Proses menukar AST kepada Opcodes dipanggil kompilasi .

  • Dengan Opcodes, inilah bahagian yang menyeronokkan: melaksanakan kod! PHP mempunyai enjin yang dipanggil Zend VM, yang mampu menerima satu siri Opcode dan melaksanakannya. Selepas semua Opcodes dilaksanakan, Zend VM menamatkan program.

Rajah ini boleh menjadikannya lebih jelas untuk anda:

Pandangan mendalam tentang JIT dalam PHP 8

Versi ringkas gambaran keseluruhan proses tafsiran PHP.

Seperti yang anda boleh lihat. Berikut ialah soalan: Walaupun kod PHP tidak berubah, adakah proses ini masih akan diikuti setiap kali ia dilaksanakan?

Mari kita lihat semula Opcodes. Betul! Itulah sebabnya sambungan Opcache wujud.

Pelanjutan Opcache

Pelanjutan Opcache disertakan dengan PHP dan biasanya tidak perlu melumpuhkannya. Apabila menggunakan PHP adalah lebih baik untuk menghidupkan Opcache.

Apa yang dilakukannya ialah menambahkan lapisan cache kongsi memori pada Opcodes. Tugasnya adalah untuk mengekstrak Opcode yang baru dijana daripada AST dan cachenya supaya langkah Lexing/Tokenizing dan Parsing boleh dilangkau semasa pelaksanaan.

Ini ialah gambar rajah proses yang merangkumi sambungan Opcache:

Pandangan mendalam tentang JIT dalam PHP 8

Proses tafsiran PHP menggunakan Opcache. Jika fail telah dihuraikan, PHP akan mendapatkan Opcodes cache untuknya dan bukannya menghuraikannya semula.

Melangkau langkah Lexing/Tokenizing, Parsing dan Compile dengan sempurna?.

Nota sampingan: Inilah PHP 7.4 Pramuat Ciri RFC yang hebat Membolehkan anda memberitahu PHP FPM untuk menghuraikan pangkalan kod, menukarnya kepada Opcodes dan cache sebelum melaksanakannya.

Adakah anda ingin tahu bagaimana JIT mengambil bahagian dalam proses tafsiran ini? Artikel ini akan menerangkan.

Apakah kesan kompilasi Just In Time?

Selepas mendengar siaran PHP dan JIT Zeev di PHP Internals News, saya mengetahui apa yang JIT sebenarnya lakukan.

Jika sambungan Opcache menjadikannya lebih pantas untuk mendapatkan Opcodes terus ke Zend VM, JIT membenarkannya berjalan tanpa menggunakan Zend VM sama sekali.

Zend VM ialah program yang ditulis dalam C yang bertindak sebagai lapisan antara Opcodes dan CPU. JIT menjana kod terkumpul secara langsung pada masa jalan, jadi PHP boleh melangkau Zend VM dan dilaksanakan terus oleh CPU. Secara teori, prestasi akan menjadi lebih baik.

Ini kedengaran pelik kerana pelaksanaan konkrit perlu ditulis untuk setiap jenis struct sebelum ia boleh disusun menjadi kod mesin. Tetapi sebenarnya ini adalah munasabah.

JIT PHP menggunakan pustaka yang dipanggil DynaASM (Dynamic Assembler), yang memetakan satu set arahan CPU dalam format tertentu ke dalam kod pemasangan untuk pelbagai jenis CPU. Oleh itu, pengkompil hanya perlu menggunakan DynASM untuk menukar Opcodes kepada kod mesin untuk struktur tertentu.

Namun, ada masalah yang menyusahkan saya sejak sekian lama.

Jika pramuat boleh menghuraikan kod PHP ke dalam Opcodes sebelum pelaksanaan, dan DynASM boleh menyusun Opcodes ke dalam kod mesin (Kompilasi Just In Time), mengapa kita tidak menggunakan kompilasi Ahead of Time) Bagaimana pula dengan menyusun PHP serta merta?

Salah satu sebab yang saya dapati dengan mendengar siaran Zeev ialah PHP ialah bahasa yang ditaip lemah, yang bermaksud PHP selalunya tidak mengetahui jenis pembolehubah sehingga Zend VM cuba untuk laksanakan opcode.

Anda boleh menyemak jenis kesatuan nilai Zend untuk mengetahui bahawa banyak penunjuk menunjuk kepada pembolehubah jenis yang berbeza. Apabila Zend VM cuba mendapatkan nilai daripada Zend_value, ia menggunakan makro seperti ZSTR_VAL untuk mendapatkan penuding kepada rentetan dalam jenis kesatuan.

Sebagai contoh, pengendali Zend VM ini mengendalikan ungkapan "kurang daripada atau sama dengan" (

Menggunakan kod mesin untuk melaksanakan logik inferens jenis tidak boleh dilaksanakan dan mungkin menjadi lebih perlahan.

Menilai dahulu dan kemudian menyusun juga bukan pilihan yang baik kerana menyusun kepada kod mesin ialah tugas intensif CPU. Jadi menyusun segala-galanya semasa runtime juga tidak bagus.

Jadi, bagaimanakah kompilasi Just In Time berfungsi

Sekarang kita tahu bahawa jenis tidak boleh disimpulkan dengan baik untuk disusun lebih awal. Kami juga tahu bahawa kompilasi pada masa jalan adalah mahal dari segi pengiraan. Jadi apakah faedah JIT untuk PHP?

Untuk mencari keseimbangan, JIT PHP cuba menyusun hanya Opcode yang berharga. Untuk melakukan ini, JIT menganalisis Opcodes yang Zend VM akan laksanakan dan menyemak kemungkinan kompilasi. (Mengikut fail konfigurasi)

Apabila Opcode disusun, ia akan menyerahkan pelaksanaan kepada kod yang disusun itu dan bukannya kepada Zend VM. Ia kelihatan seperti ini:

Pandangan mendalam tentang JIT dalam PHP 8

Proses tafsiran JIT PHP. Jika disusun, Opcodes tidak dilaksanakan oleh Zend VM.

Oleh itu, dalam sambungan Opcache, terdapat dua arahan pengesanan untuk menentukan sama ada untuk menyusun Opcode. Jika ya, pengkompil akan menggunakan DynASM untuk menukar Opcode ini kepada kod mesin dan melaksanakan kod mesin ini.

Menariknya, memandangkan terdapat had MB (juga boleh dikonfigurasikan) pada kod yang disusun dalam antara muka semasa, pelaksanaan kod mesti boleh bertukar dengan lancar antara JIT dan kod yang ditafsirkan.

Sebenarnya, ceramah oleh Benoit Jacquemont tentang JIT dalam php ini membantu saya memahami keseluruhan perkara ini.

Saya masih tidak pasti bila bahagian kompilasi dilakukan dengan berkesan, tetapi saya rasa sekarang saya tidak begitu mahu tahu.

Jadi, peningkatan prestasi anda mungkin tidak besar

Saya harap kini jelas mengapa kebanyakan aplikasi php tidak mendapat keuntungan prestasi yang besar daripada menggunakan penyusun tepat masa. Inilah sebabnya Zeev mengesyorkan bahawa pemprofilan dan percubaan dengan konfigurasi JIT yang berbeza untuk aplikasi anda adalah pendekatan terbaik.

Jika anda menggunakan PHP FPM, adalah perkara biasa untuk berkongsi kod opkod yang disusun merentas berbilang permintaan, tetapi itu masih bukan pengubah permainan.

Ini kerana JIT mengoptimumkan operasi yang intensif secara pengiraan dan kebanyakan aplikasi php hari ini lebih terikat kepada I/O daripada yang lain Jika anda mengakses cakera atau rangkaian, maka kendalikan Tidak kira sama ada operasi disusun atau tidak. Masa akan sangat serupa.

Melainkan...

Anda melakukan sesuatu yang tidak terikat dengan I/O, seperti pemprosesan imej atau pembelajaran mesin. Apa-apa sahaja yang tidak menyentuh I/O akan mendapat manfaat daripada pengkompil JIT.

Inilah sebabnya orang sekarang mengatakan bahawa kami lebih suka menulis fungsi asli dalam PHP daripada menulis dalam C. Jika fungsi ini dikompilasi pula, overhed akan menjadi tidak nyata.

Masa yang menyeronokkan menjadi pengaturcara PHP...


Saya harap artikel ini akan membantu anda dan membolehkan anda memahami JIT PHP8 dengan lebih baik.


Alamat asal: https://thephp.website/en/issue/php-8-jit/

Disyorkan: "Video PHP Tutorial

Atas ialah kandungan terperinci Pandangan mendalam tentang JIT dalam PHP 8. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial PHP
1488
72
Cara Menggunakan PHP untuk Membina Fungsi Perkongsian Sosial PHP Perkongsian Interface Integration Practice Cara Menggunakan PHP untuk Membina Fungsi Perkongsian Sosial PHP Perkongsian Interface Integration Practice Jul 25, 2025 pm 08:51 PM

Kaedah teras untuk membina fungsi perkongsian sosial dalam PHP adalah untuk menghasilkan pautan perkongsian secara dinamik yang memenuhi keperluan setiap platform. 1. Mula -mula dapatkan halaman semasa atau URL dan maklumat artikel yang ditentukan; 2. Gunakan urlencode untuk menyandikan parameter; 3. Sambutan dan menjana pautan perkongsian mengikut protokol setiap platform; 4. Pautan paparan di hujung depan untuk pengguna mengklik dan berkongsi; 5. Dinamik menghasilkan tag OG pada halaman untuk mengoptimumkan paparan kandungan perkongsian; 6. Pastikan untuk melepaskan input pengguna untuk mencegah serangan XSS. Kaedah ini tidak memerlukan pengesahan yang kompleks, mempunyai kos penyelenggaraan yang rendah, dan sesuai untuk kebanyakan keperluan perkongsian kandungan.

PHP memanggil AI Pembantu Suara Pintar PHP Pembinaan Sistem Interaksi Suara PHP PHP memanggil AI Pembantu Suara Pintar PHP Pembinaan Sistem Interaksi Suara PHP Jul 25, 2025 pm 08:45 PM

Input suara pengguna ditangkap dan dihantar ke backend PHP melalui API Mediarecorder JavaScript front-end; 2. PHP menjimatkan audio sebagai fail sementara dan memanggil STTAPI (seperti Pengiktirafan Suara Google atau Baidu) untuk mengubahnya menjadi teks; 3. PHP menghantar teks kepada perkhidmatan AI (seperti Openaigpt) untuk mendapatkan jawapan pintar; 4. PHP kemudian memanggil TTSAPI (seperti sintesis Baidu atau Google Voice) untuk menukar balasan ke fail suara; 5. PHP mengalir fail suara kembali ke bahagian depan untuk bermain, menyelesaikan interaksi. Seluruh proses dikuasai oleh PHP untuk memastikan hubungan lancar antara semua pautan.

Cara Menggunakan PHP Digabungkan dengan AI Untuk Mencapai Ralat Pembetulan Ralat PHP Pengesanan dan Pengoptimuman Sintaks PHP Cara Menggunakan PHP Digabungkan dengan AI Untuk Mencapai Ralat Pembetulan Ralat PHP Pengesanan dan Pengoptimuman Sintaks PHP Jul 25, 2025 pm 08:57 PM

Untuk merealisasikan pembetulan ralat teks dan pengoptimuman sintaks dengan AI, anda perlu mengikuti langkah -langkah berikut: 1. Pilih model AI atau API yang sesuai, seperti Baidu, Tencent API atau perpustakaan NLP sumber terbuka; 2. Panggil API melalui curl atau Guzzle PHP dan memproses hasil pulangan; 3. Maklumat pembetulan ralat paparan dalam aplikasi dan membenarkan pengguna memilih sama ada untuk mengadopsinya; 4. Gunakan php-l dan php_codesniffer untuk pengesanan sintaks dan pengoptimuman kod; 5. Secara berterusan mengumpul maklum balas dan mengemas kini model atau peraturan untuk meningkatkan kesannya. Apabila memilih AIAPI, fokus pada menilai ketepatan, kelajuan tindak balas, harga dan sokongan untuk PHP. Pengoptimuman kod harus mengikuti spesifikasi PSR, gunakan cache yang munasabah, elakkan pertanyaan bulat, mengkaji semula kod secara berkala, dan gunakan x

PHP Membuat Sistem Komen Blog untuk Mengewangkan Kajian Komen PHP dan Strategi Anti-Brush PHP Membuat Sistem Komen Blog untuk Mengewangkan Kajian Komen PHP dan Strategi Anti-Brush Jul 25, 2025 pm 08:27 PM

1. Memaksimumkan nilai komersil sistem komen memerlukan menggabungkan pengiklanan pengiklanan asli, perkhidmatan nilai tambah pengguna (seperti memuat naik gambar, komen top-up), mempengaruhi mekanisme insentif berdasarkan kualiti komen, dan pematuhan data pengewangan data tanpa nama; 2. Strategi audit harus mengadopsi gabungan penapisan kata kunci dinamik pra-audit dan mekanisme pelaporan pengguna, ditambah dengan penarafan kualiti komen untuk mencapai pendedahan hierarki kandungan; 3. Anti-brushing memerlukan pembinaan pertahanan berbilang lapisan: Recaptchav3 Pengesahan tanpa sensor, Honeypot Honeypot Field Robot, IP dan Had Frekuensi Timestamp menghalang penyiraman, dan pengiktirafan corak kandungan menandakan komen yang mencurigakan, dan terus berurusan dengan serangan.

Cara menggunakan PHP untuk menggabungkan AI untuk menjana imej. PHP secara automatik menjana karya seni Cara menggunakan PHP untuk menggabungkan AI untuk menjana imej. PHP secara automatik menjana karya seni Jul 25, 2025 pm 07:21 PM

PHP tidak secara langsung melaksanakan pemprosesan imej AI, tetapi mengintegrasikan melalui API, kerana ia adalah baik pada pembangunan web dan bukannya tugas-tugas intensif pengkomputeran. Integrasi API boleh mencapai pembahagian profesional buruh, mengurangkan kos, dan meningkatkan kecekapan; 2. Mengintegrasikan teknologi utama termasuk menggunakan Guzzle atau Curl untuk menghantar permintaan HTTP, pengekodan data JSON dan penyahkodan, pengesahan keselamatan utama API, pemprosesan giliran yang memakan masa yang memakan masa, pengendalian ralat yang teguh dan mekanisme semula, penyimpanan imej dan paparan; 3. Cabaran umum termasuk kos API daripada kawalan, hasil generasi yang tidak terkawal, pengalaman pengguna yang lemah, risiko keselamatan dan pengurusan data yang sukar. Strategi tindak balas menetapkan kuota dan cache pengguna, menyediakan panduan propt dan pemilihan multi-gambar, pemberitahuan asynchronous dan kemajuan kemajuan, penyimpanan pembolehubah persekitaran utama dan audit kandungan, dan penyimpanan awan.

PHP menyedari pengurusan inventori komoditi dan pengewangan PHP penyegerakan inventori dan mekanisme penggera PHP menyedari pengurusan inventori komoditi dan pengewangan PHP penyegerakan inventori dan mekanisme penggera Jul 25, 2025 pm 08:30 PM

PHP memastikan pemotongan inventori atomik melalui urus niaga pangkalan data dan kunci baris forupdate untuk mengelakkan overselling serentak yang tinggi; 2. Konsistensi inventori pelbagai platform bergantung kepada pengurusan berpusat dan penyegerakan yang didorong oleh peristiwa, menggabungkan pemberitahuan API/webhook dan beratur mesej untuk memastikan penghantaran data yang boleh dipercayai; 3. Mekanisme penggera harus menetapkan inventori rendah, sifar/inventori negatif, jualan yang tidak dapat dilepaskan, kitaran penambahan dan strategi turun naik yang tidak normal dalam senario yang berbeza, dan pilih DingTalk, SMS atau orang yang bertanggungjawab e -mel mengikut urgensi, dan maklumat penggera mesti lengkap dan jelas untuk mencapai penyesuaian perniagaan dan tindak balas yang cepat.

Beyond the Lamp Stack: Peranan PHP dalam Senibina Enterprise Moden Beyond the Lamp Stack: Peranan PHP dalam Senibina Enterprise Moden Jul 27, 2025 am 04:31 AM

Phpisstillrelevantinmodernenterpriseenvironments.1.modernphp (7.xand8.x) Menawarkan Perpaduan Perlengkapan, ketegangan, jitcompilation, danmodernsyntax, makeitsuatableforlarge-scaleapplications.2.phpintegratefective

PHP bersepadu pengiktirafan ucapan AI dan penterjemah PHP Rekod Penyelesaian Generasi Automatik PHP bersepadu pengiktirafan ucapan AI dan penterjemah PHP Rekod Penyelesaian Generasi Automatik Jul 25, 2025 pm 07:06 PM

Pilih Perkhidmatan Pengiktirafan Suara AI yang sesuai dan mengintegrasikan PHPSDK; 2. Gunakan PHP untuk memanggil FFMPEG untuk menukar rakaman ke dalam format API yang diperlukan (seperti WAV); 3. Muat naik fail ke penyimpanan awan dan hubungi pengiktirafan tak segerak API; 4. Menganalisis hasil JSON dan menyusun teks menggunakan teknologi NLP; 5. Menjana dokumen Word atau Markdown untuk melengkapkan automasi rekod mesyuarat. Seluruh proses perlu memastikan penyulitan data, kawalan akses dan pematuhan untuk memastikan privasi dan keselamatan.

See all articles