c# нельзя добавить или удалить элементы с массива? Я почитал что нельзя, но почему именно так реализовали. Кто то в курсе?
потому что размер массива ты цказываешь при создании.
Я понял что размер фиксированный. Но в чем преимущество данной реализации? Так меньше памяти жрет?
насправді на це як на мене немає короткої повної відповіді тому що річ не скільки про arrays в шарпі а про них загалом в програмуванні, не зміг знайти гарного саммарі в гуглі тому наведу кілька причин та може інші теж доєднаються: Fixed length в першу чергу це рішення історично зумовлене тим як масиви були зроблені в java, c++, тим як вони розташовані в пам'яті та тим що fixed length це безпечніше з точки зору дизайну імплементації примітиву навколо якого побудовані інші структури даних в тій чи іншій мові програмування.
чтение быстрее
чому?)
бо читати байтики що йдуть підряд швидше, ніж розкидані по пам'яті )
исторически так сложилось. когда памяти было мало, а работать с ней надо было
Ааа, теперь более менее понятно 🌚
Можєш пояснити, за рахунок чтого швидкість збільшуеться? Як на мене немає різниці послідовно байти читати, чи рандомно. Швидкість доступу до RAM константна.
сейчас может и да. а раньше. раньше дефрагментаторы диска были, которые упорядочивали размещение файлов для более быстрого доступа к ним )
у тому, що ти можеш константно зчитати наприклад 2мб пам'яті що йде підряд. Якщо в тебе вони розкидані потрібно буде читати Н раз
там твердження хибне тому що імплементація array під собою by definition означає лінійну структуру даних
При чому тут диск, масив завжди в RAM
так є оверхед шоб визначати з якої адреси читати наступну інфу
2мб зчитати куди? Масив вже в RAM.
я как пример привёл ) Арсений ниже более чётко написал - загрузка в кеш, упреждающее чтение или как там было
у кєш, у твій стек
Обсуждают сегодня