


Interviewer: Mehrere Implementierungsmethoden der PHP-Erweiterung auflisten und deren Leistung vergleichen?
Über verschiedene Implementierungsmethoden von PHP-Erweiterungen
1.php native Erweiterungsentwicklung in C-Sprache, Hinweis: [ext_skel.php] Skripterstellung
2.zephir
3.php-cpp
4.php-x
5.cgo kapselt den Zendapi-Modus . . Nicht auf die oben genannten Methoden beschränkt.- Verwenden Sie die Leistung der Fibonacci-Sequenzberechnung, um den Laufeffekt in 4 Modi zu überprüfen: [zephir, cgo, PHP mit aktiviertem JIT].
- Zephir-Code-Generierungserweiterung
- cgo-Code-Generierungserweiterung
package main /* #ifdef HAVE_CONFIG_H #include "config.h" #endif #include "php.h" #include "php_ini.h" #include "ext/standard/info.h" static int le_go2php; PHP_MINIT_FUNCTION(go2php) { return SUCCESS; } PHP_MSHUTDOWN_FUNCTION(go2php) { return SUCCESS; } PHP_RINIT_FUNCTION(go2php) { return SUCCESS; } PHP_RSHUTDOWN_FUNCTION(go2php) { return SUCCESS; } PHP_MINFO_FUNCTION(go2php) { php_info_print_table_start(); php_info_print_table_header(2, "go2php support", "enabled"); php_info_print_table_end(); } PHP_FUNCTION(go2php_print) { zend_long a,b; ZEND_PARSE_PARAMETERS_START(1, 1) Z_PARAM_LONG(a) ZEND_PARSE_PARAMETERS_END(); b = calcFib(a); RETURN_LONG(b); } ZEND_BEGIN_ARG_INFO(null, 0) ZEND_END_ARG_INFO() const zend_function_entry go2php_functions[] = { PHP_FE(go2php_print, null) PHP_FE_END }; zend_module_entry go2php_module_entry = { STANDARD_MODULE_HEADER, "go2php", go2php_functions, PHP_MINIT(go2php), PHP_MSHUTDOWN(go2php), PHP_RINIT(go2php), PHP_RSHUTDOWN(go2php), PHP_MINFO(go2php), "0.1.0", STANDARD_MODULE_PROPERTIES }; #ifdef COMPILE_DL_GO2PHP ZEND_GET_MODULE(go2php) #endif */ import "C" func main() {}
Nach dem Login kopierenKompilieren und verknüpfenpackage main import "C" //export calcFib func calcFib(i int) int { if i < 2 { return i } return calcFib(i-1)+calcFib(i-2) }
Nach dem Login kopieren
//Main 类 final class Zimuge { public static function calcFibonacci(int i){ if (i < 2) { return i; } return self::calcFibonacci(i - 1) + self::calcFibonacci(i - 2); }
编译安装 zephir build
CGO_CFLAGS="-g \ -I`/root/download/php8/bin/php-config --include-dir` \ -I`/root/download/php8/bin/php-config --include-dir`/main \ -I`/root/download/php8/bin/php-config --include-dir`/TSRM \ -I`/root/download/php8/bin/php-config --include-dir`/Zend \ -I`/root/download/php8/bin/php-config --include-dir`/ext \ -I`/root/download/php8/bin/php-config --include-dir`/ext/date/lib \ -DHAVE_CONFIG_H" CGO_LDFLAGS="-Wl,--export-dynamic -Wl,--unresolved-symbols=ignore-all" go build -p 1 -gcflags "-l" -buildmode=c-shared -o go2php.so
<?php const COUNT = 30; function calcFibonacci(int $i): int { if ($i < 2) { return $i; } return calcFibonacci($i - 1) + calcFibonacci($i - 2); } // CGO 速度 $startTime = microtime(true); for($i = 1; $i <= COUNT; $i++) { if($i != COUNT) { go2php_print($i); }else { echo go2php_print($i)."\n"; } } $time = microtime(true) - $startTime; echo "CGO: {$time} 秒\n"; //zephir 速度 $startTime = microtime(true); for($i = 1; $i <= COUNT; $i++) { if($i != COUNT) { Lsz\Zimuge::calcFibonacci($i); }else { echo Lsz\Zimuge::calcFibonacci($i)."\n"; } } $time = microtime(true) - $startTime; echo "zephir: {$time} 秒\n"; // PHP JIT 速度 $startTime = microtime(true); for($i = 1; $i <= COUNT; $i++) { if($i != COUNT) { calcFibonacci($i); }else { echo calcFibonacci($i)."\n"; } } $time = microtime(true) - $startTime; echo "PHP: {$time} 秒\n";
php test.php ->执行结果取一个平均 832040 CGO: 0.059875011444092 秒 832040 zephir: 8.5679790973663 秒 832040 PHP: 0.75995492935181 秒
php -dopcache.enable_cli=1 -dopcache.jit_buffer_size=100M test.php ->执行结果取一个平均 832040 CGO: 0.046900987625122 秒 832040 zephir: 5.5882248878479 秒 832040 PHP: 0.10621190071106 秒
[PHP Modules] Core ctype curl date dom FFI fileinfo filter gd go2php hash iconv json libxml lsz mbstring mysqlnd openssl pcre PDO pdo_mysql pdo_sqlite Phar posix redis Reflection session SimpleXML SPL sqlite3 standard swoole tokenizer xml xmlreader xmlwriter yaf Zend OPcache zephir_parser zimuge [Zend Modules] Zend OPcache
php -v PHP 8.1.3 (cli) (built: Feb 27 2022 19:40:08) (NTS) Copyright (c) The PHP Group Zend Engine v4.1.3, Copyright (c) Zend Technologies with Zend OPcache v8.1.3, Copyright (c), by Zend Technologies
Fazit:
JIT kann die Leistung von PHP verbessern. Wenn Sie Go lernen, aber nicht auf PHP verzichten möchten, können Sie CGO ausprobieren. zephir Obwohl die Rechenleistung nicht sehr gut ist, ist das Schreiben von PHP-Erweiterungen relativ einfach zu implementieren. Empfohlenes Lernen: „PHP-Video-Tutorial
“
Das obige ist der detaillierte Inhalt vonInterviewer: Mehrere Implementierungsmethoden der PHP-Erweiterung auflisten und deren Leistung vergleichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Sie können überprüfen, welche Erweiterungen von PHP verwendet werden, indem Sie die Ausgabe der Funktion phpinfo() anzeigen, Befehlszeilentools verwenden und die PHP-Konfigurationsdatei überprüfen. 1. Sehen Sie sich die Ausgabe der Funktion phpinfo() an, erstellen Sie ein einfaches PHP-Skript, speichern Sie dieses Skript als phpinfo.php und laden Sie es auf Ihren Webserver hoch. Suchen Sie einfach nach dem Schlüsselwort „extension“ oder „extension_loaded“ auf der Seite, um Informationen über die Erweiterung zu finden.

So erweitern Sie PDO mit PHP, um eine Verbindung zur Oracle-Datenbank herzustellen. Einführung: PHP ist eine sehr beliebte serverseitige Programmiersprache und Oracle ist ein häufig verwendetes relationales Datenbankverwaltungssystem. In diesem Artikel wird erläutert, wie Sie mithilfe der PHP-Erweiterung PDO (PHPDataObjects) eine Verbindung zur Oracle-Datenbank herstellen. 1. Installieren Sie die PDO_OCI-Erweiterung. Um eine Verbindung zur Oracle-Datenbank herzustellen, müssen Sie zunächst die PDO_OCI-Erweiterung installieren. Hier sind die Schritte zum Installieren der PDO_OCI-Erweiterung: Stellen Sie sicher

So erweitern Sie mit PHP die Berichtserstellungsfunktion von SuiteCRM SuiteCRM ist ein leistungsstarkes Open-Source-CRM-System, das umfangreiche Funktionen bietet, um Unternehmen bei der Verwaltung von Kundenbeziehungen zu unterstützen. Eine der wichtigen Funktionen ist die Berichterstellung. Mithilfe von Berichten können Unternehmen ihre Geschäftssituation besser verstehen und richtige Entscheidungen treffen. In diesem Artikel wird erläutert, wie Sie mit PHP die Berichtsgenerierungsfunktion von SuiteCRM erweitern und relevante Codebeispiele bereitstellen. Bevor Sie beginnen, müssen Sie sicherstellen, dass SuiteCRM installiert ist.

Bei der Entwicklung mit PHP müssen wir möglicherweise einige PHP-Erweiterungen verwenden. Diese Erweiterungen können uns mehr Funktionen und Tools zur Verfügung stellen und unsere Entwicklungsarbeit effizienter und komfortabler machen. Bevor wir diese Erweiterungen verwenden können, müssen wir sie jedoch zunächst installieren. In diesem Artikel erfahren Sie, wie Sie PHP-Erweiterungen installieren. 1. Was ist eine PHP-Erweiterung? PHP-Erweiterungen beziehen sich auf Komponenten, die der Programmiersprache PHP zusätzliche Funktionen und Dienste bereitstellen. Diese Komponenten können über den Erweiterungsmechanismus von PHP installiert und verwendet werden. Die PHP-Erweiterung kann uns dabei helfen

PHP ist eine beliebte serverseitige Skriptsprache, die dynamische Inhalte auf Webseiten verarbeiten kann. Mit der Geoip-Erweiterung für PHP können Sie Informationen über den Standort des Benutzers in PHP abrufen. In diesem Artikel erfahren Sie, wie Sie die Geoip-Erweiterung von PHP verwenden. Was ist die GeoIP-Erweiterung für PHP? Die GeoIP-Erweiterung für PHP ist eine kostenlose Open-Source-Erweiterung, mit der Sie Daten über IP-Adressen und Standortinformationen abrufen können. Diese Erweiterung kann mit der GeoIP-Datenbank verwendet werden, einer von MaxMin entwickelten Datenbank

Pagoda Panel ist ein Open-Source-Serververwaltungspanel, das Website-Betreibern bequeme Website-Verwaltung, Datenbankverwaltung, SSL-Zertifikatsverwaltung und andere Dienste bietet, aber auch leistungsstarke PHP-Erweiterungs- und PHP-Versionsverwaltungsfunktionen bietet, die die Serververwaltung einfacher und einfacher machen effizient. 1. PHP-Erweiterung PHP-Erweiterung ist ein Modul zur Verbesserung von PHP-Funktionen. Durch die Installation von PHP-Erweiterungen können weitere Funktionen und Dienste implementiert werden, wie zum Beispiel: Accelerator: Accelerator kann die PHP-Leistung erheblich verbessern und die Dienstlast durch Zwischenspeichern von PHP-Skripten reduzieren.

Die Entwicklung von PHP-Erweiterungen ist die Kunst, benutzerdefinierte Funktionen zu erstellen, die PHP-Kernfunktionalität zu erweitern und leistungsfähigere Anwendungen zu erstellen. Es eröffnet neue Möglichkeiten in der PHP-Welt und ermöglicht es Entwicklern, die grundlegenden Einschränkungen der Sprache zu überwinden. Dieser Artikel nimmt Sie mit auf eine Reise durch die Entwicklung von PHP-Erweiterungen und vermittelt Ihnen umfassendes Wissen und praktische Anleitungen von grundlegenden Konzepten bis hin zu fortgeschrittenen Techniken. Grundlagen der Entwicklung von PHP-Erweiterungen Bevor Sie mit der Entwicklung von PHP-Erweiterungen beginnen, müssen Sie einige grundlegende Konzepte verstehen. Was sind PHP-Erweiterungen? Eine PHP-Erweiterung ist eine Dynamic Link Library (DLL), die die PHP-Kernfunktionalität erweitert und neue Datentypen, Funktionen und Klassen bereitstellt. Vorteile von PHP-Erweiterungen PHP-Erweiterungen bieten viele Vorteile, darunter Skalierbarkeit, Flexibilität, Leistungsoptimierung und Code-Wiederverwendung. PHP

Vollständiger Leitfaden: Lesen und Verarbeiten von XML-Daten mit der PHP-Erweiterung SimpleXML Einführung: In der modernen Webentwicklung ist die Verarbeitung und Bearbeitung von XML-Daten eine sehr häufige Aufgabe. Als leistungsstarke serverseitige Skriptsprache bietet PHP eine Vielzahl von Erweiterungen und Funktionen zur Verarbeitung und Manipulation von XML-Daten. Darunter ist die SimpleXML-Erweiterung ein besonders nützliches Tool, das den Prozess des Lesens und Verarbeitens von XML-Daten vereinfacht. In diesem Artikel erhalten Sie eine vollständige Anleitung zur Verwendung von PHP-Erweiterungen
