Warum das Hinzufügen von Parallelität den Go-Code verlangsamt
Frage:
Obwohl es scheinbar geeignet ist für Durch Parallelisierung kann das Hinzufügen von Parallelität den Go-Code erheblich verlangsamen. Warum ist das so?
Antwort:
Das Problem entsteht durch die Verwendung der Funktion rand.Float64(), die ein gemeinsam genutztes globales Objekt mit einer Mutex-Sperre verwendet. Diese Sperre serialisiert den Zugriff auf den Zufallszahlengenerator und beeinträchtigt die Leistung, wenn versucht wird, den Code gleichzeitig auszuführen.
Lösung:
Um dieses Problem zu beheben, erstellen Sie eine separate Instanz von die rand.Rand-Struktur für jede Goroutine. Dadurch verfügt jede Goroutine über einen eigenen Zufallszahlengenerator, wodurch Mutex-Sperren überflüssig werden und die Leistung erheblich verbessert wird.
Das obige ist der detaillierte Inhalt vonWarum verlangsamt das Hinzufügen von Parallelität manchmal Go-Code mit „rand.Float64()'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!