Das Gentoo-Projekt hat das Paketverwaltungssystem Portage 3.0 vorgestellt.

Stabilisiert Veröffentlichung des Paketverwaltungssystems Portage 3.0, verwendet in der Distribution Gentoo Linux. Dieser Branch fasst die langwierige Arbeit zum Wechsel auf Python 3 und das Ende der Unterstützung für Python 2.7 zusammen.

Neben der Beendigung der Unterstützung für Python 2.7 stellte eine weitere wichtige Änderung die Aufnahme von Optimierungendar, die die Berechnungen zur Bestimmung von Abhängigkeiten um 50–60 % beschleunigt haben. Interessanterweise schlugen einige Entwickler vor, den Abhängigkeitsauflösungscode in C/C++ oder Go umzuschreiben, um die Leistung zu steigern, aber es gelang, das bestehende Problem mit minimalem Aufwand zu lösen.

Die Profilierung des bestehenden Codes hat gezeigt, dass die meiste Zeit bei den Berechnungen für den Aufruf der Funktionen use_reduce und catpkgsplit mit wiederkehrenden Argumenten benötigt wird (zum Beispiel wurde die Funktion catpkgsplit zwischen 1 und 5 Millionen Mal aufgerufen). Um die Geschwindigkeit zu erhöhen, wurde ein Caching der Ergebnisse dieser Funktionen unter Verwendung von Dictionaries implementiert. Optimal für die Speicherung des Caches war die eingebaute Funktion lru_cache, die jedoch nur in Python-Versionen ab 3.2 verfügbar war. Um die Kompatibilität mit früheren Versionen sicherzustellen, wurde ein Stub hinzugefügt, um lru_cache zu ersetzen, jedoch erleichterte die Entscheidung, Python 2.7 in Portage 3.0 nicht mehr zu unterstützen, die Aufgabe erheblich und machte diese Zwischenschicht überflüssig.

Die Verwendung des Caches reduzierte die Ausführungszeit des Befehls „emerge -uDvpU —with-bdeps=y @world“ auf dem ThinkPad X220 von 5 Minuten und 20 Sekunden auf 3 Minuten und 16 Sekunden (63%). Tests auf anderen Systemen zeigten eine Leistungssteigerung von mindestens 48%.

Der Entwickler, der die Änderung vorgenommen hat, versuchte auch, einen Prototyp für einen Dependency-Resolver in C++ oder Rust zu erstellen, aber die Aufgabe erwies sich als zu komplex, da sie die Portierung eines großen Codesatzes erforderte und es zweifelhaft war, ob das Endergebnis den Aufwand rechtfertigte.

Quelle: opennet.ru

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster