Heim >Backend-Entwicklung >Golang >Das Go-Test-Flag „-run -' führt Tests viel schneller aus

Das Go-Test-Flag „-run -' führt Tests viel schneller aus

王林
王林nach vorne
2024-02-09 19:21:08417Durchsuche

Go test“-run -”标志执行测试的速度要快得多

PHP-Editor Apple hat bei der Einführung des Testframeworks Go Test darauf hingewiesen, dass die Verwendung des Flags „-run –“ die Geschwindigkeit der Testausführung erheblich verbessern kann. Dieses Flag weist Go test an, nur die Testfunktion und keinen Beispielcode auszuführen. Dadurch kann das Test-Framework unnötige Initialisierungs- und Bereinigungsprozesse überspringen, was zu einer schnelleren Testausführung führt. Für Entwickler, die häufig Tests durchführen müssen, ist diese Technik sehr nützlich und kann die Arbeitseffizienz verbessern.

Frageninhalt

Ich habe mir einige Benchmarks unter https://github.com/roaringbitmap/roaring angesehen

Beim Ausführen eines bestimmten Benchmarks mit -run - (wie in den Kommentaren erwähnt): go test -bench benchmarknexts -benchmem -run - scheint schneller ausgeführt zu werden, zumindest die Ausführung ohne go test -bench benchmarknexts -benchmem -run - 似乎执行得更快,至少在没有 -run - scheint einen anfänglichen Overhead von 5 Sekunden zu verursachen, der auch dargestellt wird:

==roaring==
{1,2,3,4,5,100,1000}
{3,4,1000}
{}
Cardinality:  7
Contains 3?  true
1
3
4
5
1000

Wrote  22  bytes
I wrote the content to a byte stream and read it back.
size before run optimize: 1810 bytes, and after: 38 bytes.

Da die -run-Flagge Tests basierend auf einem Regex-Muster ausführt, scheint hier etwas ausgeschlossen zu sein, aber was zum Teufel ist, dass beide denselben Test ausführen, der einzige Unterschied ist der anfängliche Overhead.

Workaround

go test „-run -“-Flag führt den Test viel schneller aus

Dies ist das erwartete Ergebnis. Es geht schneller, wenn Sie keine Tests ausführen.

Um zu sehen, was ausgeführt wird, ändern Sie -v 选项添加到 go testAusführen.

Keine Tests durchgeführt:

go clean -testcache && go test -bench benchmarknexts -benchmem -run - -v

Alle Tests durchführen:

go clean -testcache && go test -bench benchmarknexts -benchmem -v`

Oder, da -run . allen Tests entspricht,

go clean -testcache && go test -bench benchmarknexts -benchmem -run . -v

go ist ein Tool zum Verwalten von Go-Quellcode.

Logo testen

-run regexp
    Run only those tests, examples, and fuzz tests matching the regular
    expression.

-v
    Verbose output: log all tests as they are run.

Cache erstellen und testen

Der Befehl go speichert auch erfolgreiche Pakettestergebnisse zwischen. Weitere Informationen finden Sie unter „Hilfe zum Testen“. Durch Ausführen von „go clean -testcache“ werden alle zwischengespeicherten Testergebnisse gelöscht (aber nicht die zwischengespeicherten Build-Ergebnisse).

Das obige ist der detaillierte Inhalt vonDas Go-Test-Flag „-run -' führt Tests viel schneller aus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen