Use std::vector, Luke!
Oct. 21st, 2011 09:18 pmТупа (via sed) заміна std::list на std::vector у одному проекті зменшила час очікування вибірки даних із кількох хвилин до пари секунд.
Да-да, я в курсі що std::vector треба розглядати першим кандидатом при виборі контейнера, але я як завжди недооцінив обсяг даних і вирішив зекономити на переміщеннях під час сортування.
Коли я вперше в житті стикнувся з STL, то з векторами у мене якось не склалося (через їх динамічну природу) - з п’яток пробних програм у мене сегфолтили. Ніяк я не міг зрозуміти що ж воно за штука, що operator[] пам’ять не резервує і конструктори не викликає, а всі інші методи "наповнення" контейнера здавалися незручними. До Мейєрса я дібрався значно пізніше, а про кеші читаю тільки зараз. Мабуть саме ці перші враження постійно мене від векторів відвертають, хоча зараз я уже знаю що там і як. Просто підсвідомо їх боюся.
Ну тепер, начитавшись страшилок про L1/L2/L3, MESI, асоціативність, exclusive/inclusive і всяке інше, сподіваюсь, буду більш свідомо підходити до такої важливої штуки.
І взагалі, останнім часом мені все більше свербить думка про те що, може, краще ті дані не чіпати, а реалізовувати до них доступ через ітератори/інтервали, like this. А то пам’ять, звичайно, дешева, але ж і совість треба мати. Тим паче що є ще й embedded, де на пам’ять не розживешся.
Да-да, я в курсі що std::vector треба розглядати першим кандидатом при виборі контейнера, але я як завжди недооцінив обсяг даних і вирішив зекономити на переміщеннях під час сортування.
Коли я вперше в житті стикнувся з STL, то з векторами у мене якось не склалося (через їх динамічну природу) - з п’яток пробних програм у мене сегфолтили. Ніяк я не міг зрозуміти що ж воно за штука, що operator[] пам’ять не резервує і конструктори не викликає, а всі інші методи "наповнення" контейнера здавалися незручними. До Мейєрса я дібрався значно пізніше, а про кеші читаю тільки зараз. Мабуть саме ці перші враження постійно мене від векторів відвертають, хоча зараз я уже знаю що там і як. Просто підсвідомо їх боюся.
Ну тепер, начитавшись страшилок про L1/L2/L3, MESI, асоціативність, exclusive/inclusive і всяке інше, сподіваюсь, буду більш свідомо підходити до такої важливої штуки.
І взагалі, останнім часом мені все більше свербить думка про те що, може, краще ті дані не чіпати, а реалізовувати до них доступ через ітератори/інтервали, like this. А то пам’ять, звичайно, дешева, але ж і совість треба мати. Тим паче що є ще й embedded, де на пам’ять не розживешся.