4 ms·
Note that when using static linking, you don't get a copy of everything, just everything you actually use. It doesn't alter the fundamental point: shared libra
by __d 7y ago
Note that when using static linking, you don't get a copy of everything, just everything you actually use.
It doesn't alter the fundamental point: shared libraries save both persistent storage and runtime memory.
- saagarjha 7y ago> Note that when using static linking, you don't get a copy of everything, just everything you actually use. Which is a significant fraction of everything even if you call simple like printf. > It doesn't alter the fundamental point: shared libraries save both persistent storage and runtime memory. I fail to see the argument for this. Dynamic linking deduplicates dependencies and allows code to be mapped into multiple processes "for free".
- admax88q 7y agoHave you measured it? How much is dynamic linking saving you? How many processes are you running on embedded systems with of 256MB or RAM?
- saagarjha 7y ago256MB of RAM is a fairly large amount–this is how much iPhone 3GS had, for instance. It relied on dynamic linking to system libraries heavily and ran multiple processes.
- jfkebwjsbx 7y agoThat proves the point: with multi-GiB memory nowadays you can fit many times over all the space that the iPhone saved using dynamic linking.
- saagarjha 7y agoI would rather not be limited on my laptop to iPhone apps from ten years ago.
- __d 7y agoOk, so I just measured with a C "hello world". My dynamically-linked executable is 8296 bytes on disc. My statically-linked executable is 844,704 bytes on disc. So if I had a "goodbye world" program as well, that's a saving of about 800KB on disc. Now one can argue the economics of saving a bit under a megabyte in a time where an 8GB microSD card costs under USD5 in single quantities, but you can't argue that it's a relatively big saving. At runtime, the dynamic version uses (according to top) 10540 KB virtual, 540 KB resident, and 436 KB shared. The static version uses 9092 KB virtual, 256 KB resident, and 188 KB shared. I haven't investigated those numbers.
- __d 7y agoMy second sentence was arguing for dynamic linkage (I called them "shared libraries", but I think that's a fairly common nomenclature).