Heim Backend-Entwicklung PHP-Tutorial Leistungstests des PHP-Archivs Phar

Leistungstests des PHP-Archivs Phar

May 31, 2018 pm 02:30 PM
phar php 测试

Dieser Artikel stellt hauptsächlich den Leistungstest des PHP-Archivs phar vor, der einen gewissen Referenzwert hat. Jetzt kann ich ihn mit allen teilen, die ihn benötigen.

PHP hat das PHAR-Archiv hinzugefügt Das Konzept der Phar-Archive basiert auf dem JAR-Archiv der Java™-Technologie, das es ermöglicht, Anwendungen in einer einzigen Datei zu packen, die alles enthält, was zum Ausführen der Anwendung erforderlich ist. Diese Datei unterscheidet sich von einer einzelnen ausführbaren Datei, die normalerweise von einer Programmiersprache wie C generiert wird, darin, dass es sich bei der Datei tatsächlich um eine Archivdatei und nicht um eine kompilierte Anwendung handelt. Die JAR-Datei enthält also tatsächlich die Dateien, aus denen die Anwendung besteht, diese Dateien werden jedoch aus Sicherheitsgründen nicht sorgfältig differenziert. Die Phar-Erweiterung basiert auf einem ähnlichen Konzept, ist jedoch hauptsächlich für die Webumgebung von PHP konzipiert. Außerdem können Phar-Archive im Gegensatz zu JAR-Archiven von PHP selbst verarbeitet werden, sodass keine zusätzlichen Tools erforderlich sind, um sie zu erstellen oder zu verwenden. Phar-Erweiterungen sind kein neues Konzept für PHP. Es wurde ursprünglich in PHP geschrieben und hieß PHP_Archive, bevor es 2005 zur PEAR-Bibliothek hinzugefügt wurde. In der Praxis waren reine PHP-Lösungen für dieses Problem jedoch sehr langsam, weshalb es 2007 als reine C-Spracherweiterung umgeschrieben wurde und Unterstützung für das Durchlaufen von Phar-Archiven mithilfe der ArrayAccess-Objekte von SPL hinzugefügt wurde. Seitdem wurde viel daran gearbeitet, die Leistung von Phar zu verbessern. Derzeit ist die Verwendung von Phar sehr begrenzt und es gibt nur sehr wenige Leistungstests für Phar ein einfaches Experiment.
Testumgebung:
PHP: 5.5.10
CPU: 2 GHz Intel Core i7
Speicher: 8 GB
System: Darwin 13.1.0
Haupttestpunkte:
1: Phar-Ladegeschwindigkeit
1.1: Welchen Einfluss hat die Dateigröße?
1.2: Auswirkungen von include/require?
1.3: Welche Auswirkungen hat der Phar-Stub-Inhalt?
2: Phar-Code-Ausführungsgeschwindigkeit
2.1 Vergleich globaler Funktionen
2.2 Klassenobjekte
2.3 Klassenmethoden
Um sicherzustellen, dass der Test so genau wie möglich ist, wird jede Methode ausgeführt 3 Mal, und der Durchschnitt der 3 Mal ist der Wert. Gleichzeitig verwenden wir zum Vergleich direkt Code, um Benchmark-Daten zu erhalten. Die
Phar-Datei enthält hauptsächlich die Datei

phar-builder.php, die zum Generieren der Phar-Datei verwendet wird. Führen Sie diese Datei aus, um die Phar-Datei zu generieren phar-test.phar-Datei.
test_load.php testet die Geschwindigkeit des Ladens von Phar-Dateien
Die im src-Verzeichnis enthaltene Datei index.php ist eine Stub-Datei, einschließlich date.php, for.php, function.php, Datumstestdatei-Klassenmethode, for.php Testobjektmethoden, Functions.php Testfunktionsmethoden.
Spezifischer Anhangscode.
Erstens: Phar-Ladegeschwindigkeit. Zum Testen habe ich die Methoden include und require verwendet und festgestellt, dass es keinen großen Unterschied gibt. Es wird nur die Methode require verwendet.

$stime = microtime(true);
require './phar-test.phar';
$etime = microtime(true);
$total = $etime - $stime;
echo "phar total:".$total."s";
Nach dem Login kopieren

Nach der Ausführung ist die Effizienz wie folgt

localhost:phar ugg$ php test_phar_load.php 
phar total:0.0044760704040527s
localhost:phar ugg$ php test_phar_load.php 
phar total:0.0051448345184326s
localhost:phar ugg$ php test_phar_load.php 
phar total:0.0043849945068359s
localhost:phar ugg$ vim test_phar_load.php
Nach dem Login kopieren

Die durchschnittliche Belastung beträgt 4,7 Millisekunden

Im Vergleich mit der direkten Quellcode-Referenzmethode.

$stime = microtime(true);
require './src/index.php';
$etime = microtime(true);
$total = $etime - $stime;
echo "src total:".$total."s\n";
Nach dem Login kopieren

Nach der Ausführung ist die Effizienz wie folgt

localhost:phar ugg$ php test_src_load.phpsrc 
total:0.0026230812072754s
localhost:phar ugg$ php test_src_load.phpsrc 
total:0.0026969909667969s
localhost:phar ugg$ php test_src_load.phpsrc 
total:0.0025439262390137s
Nach dem Login kopieren

Der durchschnittliche Ladevorgang beträgt 2,6 Millisekunden
Fazit: Durch den Vergleich der Ladegeschwindigkeit beträgt die Die Phar-Lademethode ist besser als die direkte Dateilademethode. Sie ist viel langsamer und fast doppelt so lang wie das direkte Referenzieren der Datei. Gleichzeitig habe ich einige Interferenzdateien in die Phar-Datei geladen, um die Phar-Datei zu vergrößern. Ich habe festgestellt, dass sich die Ladezeit innerhalb von 10 KB nicht wesentlich geändert hat. Natürlich habe ich die neu hinzugefügten Dateien nicht in den Stub eingefügt. Der Zweck besteht darin, dass bei Verzeichnissen mit mehr als 10 KB die Dateiorganisationsmethode beispielsweise Autoload ist und nicht alle Dateien in einer Datei enthalten sind. Die Phar-Ladezeit beträgt etwa das 1,8-fache der SRC-Direktladezeit.

Zweitens: Test der Ausführungsgeschwindigkeit
Phar-Methode, der Code lautet wie folgt

    $stime = microtime(true);
    //require 'phar://phar-test.phar';
    require 'phar-test.phar';
    $sstime = microtime(true);
    for($i = 0; $i<10000; ++$i){
        $date = dates::next_week();
        $for = new fortest();
        $i = $for->for1to10000();
        $number = number2Chinese(&#39;12345&#39;);
    }   
    $eetime = microtime(true);
    $etime = microtime(true);
    $total = $etime - $stime;
    $total2 = $eetime - $sstime;
    echo "phar load total:".$total."s\n";
    echo "phar execution 10000 total:".$total2."s";
Nach dem Login kopieren

Die Ausführungseffizienz ist wie folgt

localhost:phar ugg$ php test_phar_functions.php 
phar load total:0.0047600269317627s
phar execution 10000 total:0.00017499923706055s
localhost:phar ugg$ php test_phar_functions.php 
phar load total:0.004863977432251s
phar execution 10000 total:0.00017404556274414s
localhost:phar ugg$ php test_phar_functions.php 
phar load total:0.004680871963501s
phar execution 10000 total:0.00016689300537109s
Nach dem Login kopieren

Für Klassenmethoden, Objektinstanzen, Objektmethoden und Funktionsmethoden, die 10.000 Mal ausgeführt werden, beträgt der Gesamtzeitverbrauch 0,17 Millisekunden.
src-Ausführungseffizienz

localhost:phar ugg$ php test_src_functions.php 
phar load total:0.0029089450836182s
phar execution 10000 total:0.00019693374633789s
localhost:phar ugg$ php test_src_functions.php 
phar load total:0.0028579235076904s
phar execution 10000 total:0.0002140998840332s
localhost:phar ugg$ php test_src_functions.php 
phar load total:0.0029168128967285s
phar execution 10000 total:0.00019478797912598s
Nach dem Login kopieren

Führen Sie Klassenmethoden, Objektinstanzen, Objektmethoden und Funktionsmethoden 10.000 Mal aus. Der Gesamtzeitverbrauch beträgt 0,20 Millisekunden.
Zusammenfassung: Durch den Vergleich der Ausführungsgeschwindigkeit wurde festgestellt, dass die Ausführungsgeschwindigkeit der Phar-Methode schneller ist als die der direkten Datei-Include-Methode (0,20-0,17)/0,20*100=15 % Die spezifische Ausführungsgeschwindigkeit Der Grund dafür wurde nicht gefunden. Es gibt einige Informationen zur Ausführungsgeschwindigkeit von phar, wenn apc+include_path festgelegt ist. https://github.com/ralphschindler/test-phar-performance-apc/.
Zusammenfassung: Die Ladegeschwindigkeit der PHP-Archivierungs-Phar-Methode ist langsamer als die der normalen Dateieinbindungsmethode, aber die Ausführungsgeschwindigkeit ist höher als die der Dateieinbindungsmethode, wenn Sie mit der Einstellung include_path und der APC- oder OP-Methode zusammenarbeiten, um das Laden zu optimieren Geschwindigkeit des Phar-Archivs, es kann die PHP-Ausführungsgeschwindigkeit verbessert werden. Der nächste Schritt besteht darin, einige Versuche zu unternehmen: 1: Erstellen Sie eine große Phar-Datei und experimentieren Sie mit der Lade- und Ausführungsgeschwindigkeit. 2: Verstehen Sie das Phar-Ladeprinzip und das Ausführungsprinzip. 3: Paketkonzeptverwaltung und Abhängigkeiten.

Das obige ist der detaillierte Inhalt vonLeistungstests des PHP-Archivs Phar. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

CakePHP-Projektkonfiguration CakePHP-Projektkonfiguration Sep 10, 2024 pm 05:25 PM

In diesem Kapitel werden wir die Umgebungsvariablen, die allgemeine Konfiguration, die Datenbankkonfiguration und die E-Mail-Konfiguration in CakePHP verstehen.

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

CakePHP Datum und Uhrzeit CakePHP Datum und Uhrzeit Sep 10, 2024 pm 05:27 PM

Um in cakephp4 mit Datum und Uhrzeit zu arbeiten, verwenden wir die verfügbare FrozenTime-Klasse.

CakePHP-Datei hochladen CakePHP-Datei hochladen Sep 10, 2024 pm 05:27 PM

Um am Datei-Upload zu arbeiten, verwenden wir den Formular-Helfer. Hier ist ein Beispiel für den Datei-Upload.

Besprechen Sie CakePHP Besprechen Sie CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP ist ein Open-Source-Framework für PHP. Es soll die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich vereinfachen. CakePHP basiert auf einer MVC-ähnlichen Architektur, die sowohl leistungsstark als auch leicht zu verstehen ist. Modelle, Ansichten und Controller gu

CakePHP-Routing CakePHP-Routing Sep 10, 2024 pm 05:25 PM

In diesem Kapitel lernen wir die folgenden Themen im Zusammenhang mit dem Routing kennen.

CakePHP arbeitet mit Datenbank CakePHP arbeitet mit Datenbank Sep 10, 2024 pm 05:25 PM

Das Arbeiten mit der Datenbank in CakePHP ist sehr einfach. In diesem Kapitel werden wir die CRUD-Operationen (Erstellen, Lesen, Aktualisieren, Löschen) verstehen.

CakePHP erstellt Validatoren CakePHP erstellt Validatoren Sep 10, 2024 pm 05:26 PM

Der Validator kann durch Hinzufügen der folgenden zwei Zeilen im Controller erstellt werden.

See all articles