Jak velký je každý znak? 4 byty + 4 byty + 4 byty (bitové příznaky) + … = jeden znak 16 bytů + 8-20 bytů hlavička
Řešení:
Nepoužívat pole struktur ale struktury polí
NE struct Particle { double x; double y; double m; string type; } particles[i].x
ANO struct ParticleSystem { double[] x; double[] y; double[] m; string[] types; } particles.x[i]
Sběrnice k paměti je jen jedna, pokud musí CPU přistupovat k RAM, tak se může stát, že se při paralelním zpracování budou jádra o paměť prát
Do cache se nenačítají jednotlivé hodnoty, ale celé řádky (cca 64 bytů)
A1 na venek poskytuje A1 metody, ale používá k tomu rozhraní B1 (interně) A1 na venek poskytuje A2 metody, ale používá k tomu rozhraní B2 (interně)
lze ale i (A3)B1, …
m * n = 9 tříd implementačních
Implementace bridge zařídí, aby existovalo pouze m + n tříd
Rectangle, Circle, Ellipse, Line, Polygon : IShape GUI knihovna (low level interface): WPF, Winforms, Qt Bridge snižuje závislost mezi tvary a GUI knihovnami
Každý objekt třídy implementující IShape má odkaz na IMultiPainter IMultiPainter:
r = new Rectangle(canvas/window, …) # canvas pak obsahuje odkaz na IMultiPainter r.Draw() IMultiPainter.DrawPath(…)