Warum ist CPython bei den beiden Tests "slowspitfire" und "waf" schneller als PyPy?

8

Gemessen an der Benchmarks , die auf dem PyPy Speed ​​Center veröffentlicht wurden, scheint es, als wäre PyPy schneller als CPython für alle bis auf zwei der vorgestellten Tests.

CPython ist schneller als PyPy bei den beiden Tests "slowspitfire" und "waf". Warum das? Welche Art von Operationen testen diese beiden Tests? Was macht CPython für diese Operationen schneller? Kann man von PyPy erwarten, dass es CPython auch für diese beiden Tests einholt und schlägt?

    
knorv 30.04.2011, 18:54
quelle

1 Antwort

8

Wie Tobu sagte, gibt es eine Nachricht auf der Mailingliste, die eine Erklärung für slowspitfire entwirft : lange Listen mit GC-Objekten in ihnen, neben anderen Faktoren.

Der waf-Benchmark hat weniger einen ausgeprägten Leistungsunterschied, und ich würde vermuten, dass die Antwort komplizierter sein wird: einige Faktoren, die PyPy besser macht, einige Faktoren, die CPython besser macht, und CPython insgesamt kommt etwas weiter.

Im Allgemeinen gibt es einige Gründe, warum eine JIT-optimierte Implementierung langsamer wird:

  • allgemeiner Overhead in JIT'ing und Überprüfung, ob JIT
  • CPU-Speicher-Kompromiss: Verwenden Sie zu viel Speicher, um zu wenig CPU-Zeit zu sparen, oder verwenden Sie mehr Paging
  • JIT'ing zu aggressiv, oder JIT'ing den falschen Code zur falschen Zeit
Mu Mind 07.05.2011, 18:47
quelle

Tags und Links