Ich habe zwei Hashes:
%Vor%Ich brauche einen Hash, der gemeinsame Schlüssel in beiden Hashes enthält:
%Vor%Ist es möglich, es ohne irgendeine Schleife zu machen?
Ich würde damit gehen:
%Vor%Was man etwas reduzieren kann:
%Vor% Der Trick liegt in der Methode &
. Die Dokumentation sagt:
Überschneidung setzen - Gibt ein neues Array zurück, das die für die beiden Arrays gemeinsamen Elemente enthält, ausgenommen Duplikate. Die Reihenfolge wird vom ursprünglichen Array beibehalten.
Hier sind einige Benchmarks, um zu zeigen, was der effizienteste Weg ist:
%Vor%Ruby 1.9.3-p448:
%Vor%Wird unter Ruby 2.0.0-p247 ausgeführt:
%Vor% Koraktors ursprünglicher Code funktioniert nicht, aber er hat es mit seinem zweiten Code-Pass gut gemacht und geht mit der besten Geschwindigkeit davon. Ich habe die Methode santhosh_2
hinzugefügt, um zu sehen, welchen Effekt das Entfernen von key?
hätte. Es hat die Routine ein wenig beschleunigt, aber nicht genug, um Koraktors zu überholen.
Nur zu Dokumentationszwecken habe ich Koraktors zweiten Code optimiert, um auch die key?
-Methode zu entfernen, und mehr Zeit damit verbracht. Hier ist die hinzugefügte Methode und die neue Ausgabe:
Tags und Links ruby