Ich versuche, die Leistung der gesperrten und sperren frei verknüpften Liste Datenstruktur zu vergleichen. Ich habe this Algorithmus für Lock frei verkettete Liste implementiert. Beide Programme sind in C implementiert.Lock frei verkettete Liste funktioniert schlechter als das gesperrte Gegenstück
Ich teste für 4 Threads. Jeder Thread hat 1000 Einfügeoperationen.
Ich verwende Intel PCM-Tool, um die Leistung zu messen.
Hier sind meine Ergebnisse: frei Lock:
Median of L3 Misses=1012699
Median of L2 Misses=1479741
Median of L3 Hits=484128
Median of L2 Hits=1797537
Median of Time=1.80696
Median of Cycles=5296042019
Median of IPC=1.536135
Median of Bytes Read=444423232
Median of Bytes Written=25414144
Gesperrt:
Median of L3 Misses=711796.5
Median of L2 Misses=1517899
Median of L3 Hits=819408.5
Median of L2 Hits=2282527
Median of Time=0.244517
Median of Cycles=894265192
Median of IPC=0.8495695
Median of Bytes Read=174872576
Median of Bytes Written=24722912
Die gesperrte Version auf jeder Zählung außer IPC besser abschneidet. Soll das geschehen? Oder das Schloss Freie Datenstruktur sollte besser funktionieren?
Wenn ja, welchen Nutzen hat die Verwendung von lockfreien Datenstrukturen? Jede Hilfe wird geschätzt.
Gehen Sie zu dieser Seite: https: //stackoverflow.com/questions/33083270 Auf dieser Seite finden Sie einen Youtube-Video-Link zu einem Vortrag bei CppCon über blocklose Implementierungen und Kompromisse. Das Video wurde in zwei Teile geteilt und der Link ist für Teil 2. Also, finden Sie Teil 1.Das Video insgesamt ist ungefähr 2 Stunden, aber der Sprecher ist ziemlich unterhaltsam und kennt seine Sachen wirklich –
Diese [Antwort] (http://stackoverflow.com/a/4044614/5781248) könnte das Leistungsproblem erklären (Konkurrenz) . Lock-freie Datenstrukturen helfen wahrscheinlich teure Kontextwechsel zu vermeiden. –
Sie sehen nicht das eigentliche Problem. Die Cache-Trefferrate ist absolut schrecklich, ein Standardproblem bei herkömmlichen verknüpften Listen auf einem modernen Prozessor. Ein sehr wichtiges Detail, das diese alten Zeitungen ignorieren. Benutze sie nicht. –