В продолжение срача про скорость memcpy.
У нас есть malloc, который выделяет память. Маллок ищет во free chain последовательный кусок свободной памяти, чтобы он был больше запрошенного объема. Потом когда мы освобождаем память, он докидывает освобожденную память во free chain. Когда память фрагментирована, так что нельзя найти достаточно большой кусок, вначале запускается дефрагментатор, и только потом выделяется память.
На этот счет было два правила, которые когда-то мы украли у Спольского:
1) выделять объем памяти, кратный двум (4 байта, 8 байтов, 16 байтов, итп) (это потеря памяти, зато гарантированно не более чем 50% памяти). 2) при вызове realloc выделять вдвое больше памяти, чем прежде (это гарантирует, что realloc не придется вызывать более чем log n раз).
В треде про memcpy выяснилось, что людям сейчас наплевать на количество инструкий и наличие условных переходов. А как с этим обстоит в случае памяти? Придумали что-нибудь новенькое, задорное?
Похожие темы
- Форум Свободная память... (2003)
- Форум Ищется очередной свободный аналог. :-) (2008)
- Форум Как склеить свободную память (2013)
- Форум FreeBSD и свободная память (2010)
- Форум загрузка ЦП + свободная память (2009)
- Форум свободная память в freebsd (2005)
- Форум Ищется свободный анало TS/Ventrilo (2008)
- Форум и всё-таки свободная память (2010)
- Форум Ищется свободный jabber-сервер на java (2012)
- Форум Свободная и занятая память в Linux (2021)