Jenom pro ujasneni, n je mnozstvi pameti, ktere mas k dispozici (protoze RAM je konecna), a pod RAM myslim vsude Random Access Memory.
Předpokládám, že velikost paměti počítače je konstantní. Ani nevěřím tomu, že rychlost přístupu do paměti závisí na její velikosti. Určitě je rozdíl v rychlosti přístupu do cache a dohlavní paměti, ale to se nedá popsat takto jednoduše.
Bohužel je to čistá realita, sám jsem na to narazil před pár měsíci při implementaci kolaborativního filtru pro větší data (řádově GB v RAM)
Tady jsou výsledky JMH benchmarku, který testuje zápis na náhodná místa různě velkých polí, vždy milion zápisů ve (stejně) náhodném pořadí. Ve sloupečcích jsou
- velikost cílového pole
- Kolikrát se podařilo milionkrát zapsat do cílového pole za 3 vteřiny
- Jak dlouho trvá zápis miliónu položek.
1 3898 0.769 ± 0.003 ms/op
2 3967 0.756 ± 0.003 ms/op
4 3882 0.773 ± 0.003 ms/op
32 3929 0.763 ± 0.003 ms/op
256 3974 0.754 ± 0.003 ms/op
512 3912 0.767 ± 0.004 ms/op
1024 3927 0.764 ± 0.003 ms/op
2048 3986 0.752 ± 0.003 ms/op
4096 3985 0.752 ± 0.002 ms/op
8192 3993 0.751 ± 0.002 ms/op
16384 3990 0.751 ± 0.004 ms/op
65536 2278 1.318 ± 0.013 ms/op
1048576 1094 2.741 ± 0.060 ms/op
4194304 872 3.440 ± 0.089 ms/op
8388608 480 6.268 ± 0.120 ms/op
16777216 357 8.426 ± 0.158 ms/op
33554432 316 9.533 ± 0.132 ms/op
67108864 295 10.210 ± 0.102 ms/op
134217728 275 10.954 ± 0.120 ms/op
536870912 238 12.686 ± 0.343 ms/op
1073741824 185 16.323 ± 0.680 ms/op
Je vidět, že rychlost vykonávání "algoritmu" na velikosti dat závisí poměrně významně. Zajímavé také je, že takovýhle "algoritmus" nad velkými daty na jednom počítači skoro nejde paralelizovat, protože bottleneck je přístup do RAM.
Pro úplnost
sudo dmidecode -t cache
# dmidecode 3.0
Getting SMBIOS data from sysfs.
SMBIOS 2.8 present.
Handle 0x0003, DMI type 7, 19 bytes
Cache Information
Socket Designation: L1 Cache
Configuration: Enabled, Not Socketed, Level 1
Operational Mode: Write Back
Location: Internal
Installed Size: 64 kB
Maximum Size: 64 kB
Supported SRAM Types:
Synchronous
Installed SRAM Type: Synchronous
Speed: Unknown
Error Correction Type: Parity
System Type: Data
Associativity: 8-way Set-associative
Handle 0x0004, DMI type 7, 19 bytes
Cache Information
Socket Designation: L1 Cache
Configuration: Enabled, Not Socketed, Level 1
Operational Mode: Write Back
Location: Internal
Installed Size: 64 kB
Maximum Size: 64 kB
Supported SRAM Types:
Synchronous
Installed SRAM Type: Synchronous
Speed: Unknown
Error Correction Type: Parity
System Type: Instruction
Associativity: 8-way Set-associative
Handle 0x0005, DMI type 7, 19 bytes
Cache Information
Socket Designation: L2 Cache
Configuration: Enabled, Not Socketed, Level 2
Operational Mode: Write Back
Location: Internal
Installed Size: 512 kB
Maximum Size: 512 kB
Supported SRAM Types:
Synchronous
Installed SRAM Type: Synchronous
Speed: Unknown
Error Correction Type: Single-bit ECC
System Type: Unified
Associativity: 4-way Set-associative
Handle 0x0006, DMI type 7, 19 bytes
Cache Information
Socket Designation: L3 Cache
Configuration: Enabled, Not Socketed, Level 3
Operational Mode: Write Back
Location: Internal
Installed Size: 4096 kB
Maximum Size: 4096 kB
Supported SRAM Types:
Synchronous
Installed SRAM Type: Synchronous
Speed: Unknown
Error Correction Type: Multi-bit ECC
System Type: Unified
Associativity: 16-way Set-associative