Jadual Kandungan
Penghadan jenis fungsi PHP7
(1) Pengenalan
Persekitaran berjalan
Rumah pembangunan bahagian belakang PHP7 Mari kita bincangkan sama ada sekatan jenis fungsi PHP7 mempunyai kesan ke atas prestasi? (Perbincangan ujian)

Mari kita bincangkan sama ada sekatan jenis fungsi PHP7 mempunyai kesan ke atas prestasi? (Perbincangan ujian)

Feb 15, 2022 am 10:35 AM
php7 jenis fungsi

PHP7Adakah pengehadan jenis fungsi mempunyai kesan ke atas prestasi? Artikel berikut akan bercakap tentang kesan menetapkan atau tidak mengehadkan jenis data fungsi PHP7 pada prestasi saya harap ia akan membantu semua orang!

Mari kita bincangkan sama ada sekatan jenis fungsi PHP7 mempunyai kesan ke atas prestasi? (Perbincangan ujian)

Artikel ini menggunakan ujian tekanan mudah untuk meneroka kesan penetapan atau tidak mengehadkan jenis data fungsi PHP7 di samping itu, saya ingin berkongsi pengalaman dalam dua masalah kecil dan penyelesaiannya Jika terdapat sebarang kesilapan, sila betulkan.

Penghadan jenis fungsi PHP7

(1) Pengenalan

  • Penghadan jenis parameter fungsi (termasuk nilai pulangan, atribut ahli) bermula daripada PHP5 Disokong, tetapi tidak banyak jenis yang disokong PHP7 telah melanjutkannya: int/string/bool/object dll. Parameter jenis yang sama boleh diluluskan, terutamanya apabila berbilang orang sedang membangun secara kolaboratif.
  • Pembelajaran yang disyorkan: "
  • Tutorial Video PHP

    "

    • Jika tidak mungkin untuk menukar jenis data secara automatik, seperti berikut, sudah tentu, premisnya ialah jenis yang hendak ditukar boleh ditukar seperti biasa

      Artikel ini adalah mengenai kesan sekatan jenis ujian terhadap prestasi

    • Nota: Jika parameter dan nilai pulangan tidak konsisten dengan jenis yang ditetapkan, ralat akan dilaporkan, yang tidak disahkan 100% Perlu menukar secara manual
    function testInt(int $intNum){
      var_dump($intNum);
    }
    testInt("123"); // int(123)
    Salin selepas log masuk
    (2) Ujian tekanan
  • .

Persekitaran berjalan

PHP 7.2.34
  • Laravel 5.8

    AB 2.3
    • <🎜 🎜>Konfigurasi mesin tunggal
    • Nama model MacBook Pro
    Nama pemproses Quad-Core Intel Core i7
  • Memori 8 GB

    Jumlah nombor daripada teras 4
    • AB
    • Gunakan AB (Apache Benchmark) untuk ujian tekanan Memandangkan ia bukan ujian tekanan formal, kami hanya mengambil berat tentang penunjuk komprehensif: Permintaan sesaat (purata bilangan permintaan sesaat)
  • Terutamanya Parameter
  • -n Bilangan permintaan ujian tekanan
    • - c Bilangan konkurensi
    • -p Nyatakan fail yang perlu membawa parameter semasa membuat permintaan POST

      -r tidak keluar apabila menghadapi tindak balas ralat Sistem pengendalian mempunyai langkah perlindungan terhadap tinggi serangan concurrency (apr_socket_recv: Tetapan semula sambungan oleh rakan sebaya)
      • Menetapkan item Set dua POST Antara muka tidak mempunyai logik perniagaan, operasi perisian tengah, dsb., seperti berikut
      (3) Laksanakan
  • dan jalankan sebanyak lima ujian tekanan Konfigurasi dan keputusan dipaparkan seperti berikut ( Pemadaman bersatu: | grep 'Permintaan sesaat ')
/***** 1 普通接口 *****/
// CommonUserController
public function createUser(Request $request)
{
    $this->validate($request, [
        &#39;name&#39; => &#39;required|string&#39;,
        &#39;age&#39;  => &#39;required|integer&#39;,
        &#39;sex&#39;  => [&#39;required&#39;, Rule::in([1, 2])],
    ]);
    (new CommonUserModel())->createUser($request[&#39;age&#39;], $request[&#39;name&#39;], $request[&#39;sex&#39;], $request[&#39;address&#39;] ?? &#39;&#39;);
    return response()->json([&#39;status&#39; => 200, &#39;msg&#39; => &#39;ok&#39;]);
}
// CommonUserModel
public function createUser($sex, $age, $name, $address)
{
    if(empty($sex) || empty($age) || empty($name))  return false;
    // 省略DB操作
    return true;
}

/***** 2 类型限定接口 *****/
// TypeUserController
public function createUser(Request $request): JsonResponse
{
    $this->validate($request, [
        &#39;name&#39; => &#39;required|string&#39;,
        &#39;age&#39;  => &#39;required|integer&#39;,
        &#39;sex&#39;  => [&#39;required&#39;, Rule::in([1, 2])],
    ]);
    (new TypeUserModel())->createUser($request[&#39;age&#39;], $request[&#39;name&#39;], $request[&#39;sex&#39;], $request[&#39;address&#39;] ?? &#39;&#39;);
    return response()->json([&#39;status&#39; => 200, &#39;msg&#39; => &#39;ok&#39;]);
}
// TypeUserModel
public function createUser(int $age, string $name, int $sex, string $address): bool
{
    if(empty($sex) || empty($age) || empty($name)){
        return false;
    }
    // 省略DB操作
    return true;
}
Salin selepas log masuk
(4) Keputusan

    Ujian tekanan tidak terlalu ketat, keputusan adalah untuk rujukan sahaja
Peningkatan prestasi pengehadan jenis tidak sebesar yang dijangkakan, ia sangat kecil, tetapi cara penulisan ini masih disyorkan
/*****第一次*****/
// 类型限定接口 rps=456.16
ab -n 100  -c 10 -p &#39;/tmp/ab_post_data.json&#39; -T &#39;application:json&#39;  http://www.laravel_type_test.com/api/type/create_user
// 普通接口 rps=450.12
ab -n 100  -c 10 -p &#39;/tmp/ab_post_data.json&#39; -T &#39;application:json&#39;  http://www.laravel_type_test.com/api/common/create_user

/*****第二次*****/
// 类型限定接口 rps=506.74
ab -n 1000  -c 100 -p &#39;/tmp/ab_post_data.json&#39; -T &#39;application:json&#39;  http://www.laravel_type_test.com/api/type/create_user
// 普通接口 rps=491.24
ab -n 1000  -c 100 -p &#39;/tmp/ab_post_data.json&#39; -T &#39;application:json&#39;  http://www.laravel_type_test.com/api/common/create_user

/*****第三次*****/
// 类型限定接口 rps=238.43 
ab -n 5000  -c 150 -p &#39;/tmp/ab_post_data.json&#39; -T &#39;application:json&#39; -r http://www.laravel_type_test.com/api/type/create_user
// 普通接口 rps=237.16
ab -n 5000  -c 150 -p &#39;/tmp/ab_post_data.json&#39; -T &#39;application:json&#39; -r http://www.laravel_type_test.com/api/common/create_user

/*****第四次*****/
// 类型限定接口 rps=209.21
ab -n 10000  -c 150 -p &#39;/tmp/ab_post_data.json&#39; -T &#39;application:json&#39; -r http://www.laravel_type_test.com/api/type/create_user
// 普通接口 rps=198.01
ab -n 10000  -c 150 -p &#39;/tmp/ab_post_data.json&#39; -T &#39;application:json&#39; -r http://www.laravel_type_test.com/api/common/create_user

/*****第五次*****/
// 类型限定接口 rps=191.17
ab -n 100000  -c 150 -p &#39;/tmp/ab_post_data.json&#39; -T &#39;application:json&#39; -r http://www.laravel_type_test.com/api/type/create_user
// 普通接口 rps=190.55
ab -n 100000  -c 150 -p &#39;/tmp/ab_post_data.json&#39; -T &#39;application:json&#39; -r http://www.laravel_type_test.com/api/common/create_user
Salin selepas log masuk

  • Untuk lebih banyak pengetahuan berkaitan pengaturcaraan, sila lawati :
  • Video Pengaturcaraan
  • ! !


Atas ialah kandungan terperinci Mari kita bincangkan sama ada sekatan jenis fungsi PHP7 mempunyai kesan ke atas prestasi? (Perbincangan ujian). 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

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.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

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)

Bagaimana untuk memasang sambungan mongo dalam php7.0 Bagaimana untuk memasang sambungan mongo dalam php7.0 Nov 21, 2022 am 10:25 AM

Cara memasang sambungan mongo dalam php7.0: 1. Buat kumpulan pengguna dan pengguna mongodb 2. Muat turun pakej kod sumber mongodb dan letakkan pakej kod sumber dalam direktori "/usr/local/src/" 3. Masukkan direktori "src/" 4. Buka zip pakej kod sumber 5. Buat direktori fail mongodb 6. Salin fail ke direktori "mongodb/" 7. Buat fail konfigurasi mongodb;

Bagaimana untuk menyelesaikan masalah apabila php7 mengesan bahawa port tcp tidak berfungsi Bagaimana untuk menyelesaikan masalah apabila php7 mengesan bahawa port tcp tidak berfungsi Mar 22, 2023 am 09:30 AM

Dalam php5, kita boleh menggunakan fungsi fsockopen() untuk mengesan port TCP. Fungsi ini boleh digunakan untuk membuka sambungan rangkaian dan melakukan beberapa komunikasi rangkaian. Tetapi dalam php7, fungsi fsockopen() mungkin menghadapi beberapa masalah, seperti tidak dapat membuka port, tidak dapat menyambung ke pelayan, dsb. Untuk menyelesaikan masalah ini, kita boleh menggunakan fungsi socket_create() dan fungsi socket_connect() untuk mengesan port TCP.

Apakah yang perlu saya lakukan jika pemalam dipasang dalam php7.0 tetapi ia masih menunjukkan bahawa ia tidak dipasang? Apakah yang perlu saya lakukan jika pemalam dipasang dalam php7.0 tetapi ia masih menunjukkan bahawa ia tidak dipasang? Apr 02, 2024 pm 07:39 PM

Untuk menyelesaikan pemalam yang tidak menunjukkan isu yang dipasang dalam PHP 7.0: Semak konfigurasi pemalam dan dayakan pemalam. Mulakan semula PHP untuk menggunakan perubahan konfigurasi. Semak kebenaran fail pemalam untuk memastikan ia betul. Pasang kebergantungan yang hilang untuk memastikan pemalam berfungsi dengan betul. Jika semua langkah lain gagal, bina semula PHP. Punca lain yang mungkin termasuk versi pemalam yang tidak serasi, memuatkan versi yang salah atau isu konfigurasi PHP.

Cara memasang dan menggunakan php7.0 Cara memasang dan menggunakan php7.0 Nov 30, 2022 am 09:56 AM

Cara memasang dan menggunakan php7.0: 1. Pergi ke laman web rasmi PHP untuk memuat turun versi pemasangan yang sepadan dengan sistem tempatan 2. Ekstrak fail zip yang dimuat turun ke direktori yang ditentukan 3. Buka tetingkap baris arahan dan pergi ke direktori "E:\php7" Hanya jalankan arahan "php -v".

Apr 09, 2024 pm 01:33 PM

Penyelesaian biasa untuk persekitaran pelayan PHP termasuk memastikan versi PHP yang betul dipasang dan fail yang berkaitan telah disalin ke direktori modul. Lumpuhkan SELinux buat sementara waktu atau selama-lamanya. Semak dan konfigurasikan PHP.ini untuk memastikan sambungan yang diperlukan telah ditambah dan disediakan dengan betul. Mulakan atau mulakan semula perkhidmatan PHP-FPM. Semak tetapan DNS untuk isu penyelesaian.

Bagaimana cara menetapkan kebenaran secara automatik UnixSocket selepas sistem dimulakan semula? Bagaimana cara menetapkan kebenaran secara automatik UnixSocket selepas sistem dimulakan semula? Mar 31, 2025 pm 11:54 PM

Bagaimana untuk menetapkan keizinan UnixSocket secara automatik selepas sistem dimulakan semula. Setiap kali sistem dimulakan semula, kita perlu melaksanakan perintah berikut untuk mengubahsuai keizinan UnixSocket: sudo ...

Analisis perbandingan prestasi jenis fungsi golang Analisis perbandingan prestasi jenis fungsi golang Apr 28, 2024 am 10:57 AM

Dalam bahasa Go, jenis fungsi mempunyai kesan yang ketara terhadap prestasi. Perbandingan prestasi menunjukkan bahawa fungsi biasa adalah yang terbaik (147.08MOPS), diikuti oleh fungsi tanpa nama (158.01MOPS), dan akhirnya penutupan (10.02MOPS). Jenis ini mempunyai kelebihan berbeza dalam senario berbeza: fungsi tanpa nama sesuai untuk panggilan balik, penutupan sesuai untuk pengurusan keadaan dan fungsi biasa sesuai untuk pengoptimuman prestasi.

Mengapa ralat berlaku semasa memasang pelanjutan menggunakan PECL dalam persekitaran Docker? Bagaimana menyelesaikannya? Mengapa ralat berlaku semasa memasang pelanjutan menggunakan PECL dalam persekitaran Docker? Bagaimana menyelesaikannya? Apr 01, 2025 pm 03:06 PM

Punca dan penyelesaian untuk kesilapan Apabila menggunakan PECL untuk memasang sambungan dalam persekitaran Docker Apabila menggunakan persekitaran Docker, kami sering menemui beberapa sakit kepala ...

See all articles