Matwey
Только я забыл где лежит первоисточник
pavel
Привет. Кто скажет какой сейчас аллокатор наиболее распространен во "всех линуксах" в libc++ в gcc и clang. Ну то есть как выглядит алгоритм ищущий кусок стоящий за вызовами new/delete.
Alexander "SonnySlave"
Ioann_
Ioann_
На винде просто маллок, так как реаллок там бессмысленнен
Anonymous
а что там с реаллоком?
Ignat
говорят, в glibc ptmalloc2
Alexander "SonnySlave"
Ioann_
а можешь подробнее рассказать? мне тоже интересно 😊
Ну, дело в том что реаллок в win, всегда выполняет перекопирование содержимого, за счет чего скорость его работы ~равна, простому выделению памяти в новом месте. На счет того что в msvc в new malloc, это можно и по исходникам глянуть. Ну вот как-то так.
Ioann_
Если я ничего не перепутал и не получил зарплату за Пупу
Alexander "SonnySlave"
как тогда линуксовый реаллок работает?
Ioann_
Но вот что по винде
Ioann_
HeapReAlloc is guaranteed to preserve the content of the memory being reallocated, even if the new memory is allocated at a different location. The process of preserving the memory content involves a memory copy operation that is potentially very time-consuming.
Alexander "SonnySlave"
Alexander "SonnySlave"
понятное дело, что нам не нужно перевыделять весь кусок памяти, только если у нас после нашего куса есть кусок памяти столько, сколько нам надо
Ioann_
Там возможно, дело в том сколько это стоит сделать с манеджером памяти ОСи
Alexander "SonnySlave"
так всё равно если новый кусок памяти, то копировать надо. Или ты намекаешь про разную стоимость этого самого окпирования?
Ioann_
Но у меня выходило, что реаллок, на винде даже замедлял работу. А вот на линупсе все работало быстро.
Ioann_
Alexander "SonnySlave"
тут тоже чувак жалуется, что херово реаллок под виндой работает
Alexander "SonnySlave"
http://blog.httrack.com/blog/2014/04/05/a-story-of-realloc-and-laziness/
Ioann_
Ну и заодно описывает что и почему, кажется
Ioann_
Но он на догадках пишет, конечно.
Anton
Anton
Нашел расхождение Стандарта с СипипиРеференсом
Anton
Пофиксю и можно идти спать
Alexander "SonnySlave"
вот именно в таком варианте надо выкладывать на Cppreference. Всё равно не поймут, что там написано 😊
Alexander "SonnySlave"
(пока никто русскоговорящий не придёт)
Anton
Alexander "SonnySlave"
ха, ты тоже снова не спишь
Есть два варианта : либо я сейчас иду спать и снова просыпаюсь где-то в часа два
Alexander "SonnySlave"
либо я сегодня буду налаживать свой режим. но тогда мне лучше не ложится.Сегодня я то встал в 17:00
Anton
Alexander "SonnySlave"
ха, абсолютно такой-же ризонинг )
оххх уж эти ваши англицизмы. Избавляйся, а то на ЛОРе помню жаловались на твой доклад, что им не нравилось изобилие англицизмов
Anton
забавно, что ошибка на cppreference перекочевала в книжку C++ Templates: The Complete Guide. Я сначала ее там нашел, подумал, что странно придумано. Попробовал на gcc/clang - работает по-другому. посмотрел на cppref - написано как в книжке. думал, надо пропозал писать.
Alexander "SonnySlave"
Alexander "SonnySlave"
https://github.com/korken89/crect
Vladislav
Vitaliy
Danil
Danil
Vitaliy
Спасибо! Серьезная книга! Аж 2к страниц)
Timofey
Немного оффтоп. Где можно найти людей, знающих про mailbox VMS?
Vitaliy
Danil
#book
на самом деле она здесь уже была, просто вместо того чтобы искать я ее так кинул)
Vitaliy
Ну я на всякий случай пометил её
Vitaliy
Её в канале с книгами нет, кажется
Aleksandr
Vitaliy
pro.cxx.books
Vitaliy
Самая первая глава уже довольно познавательна. Оказывается std::max не может быть применён к аргументам разных типов. Ещё нет пропосала на его обощение ?
Vitaliy
То есть вот такой вызов не компилится:
std::max(1.0, 1);
Vitaliy
Если я хочу получить конкретный тип, то я воспользуюсь static_cast
Vitaliy
А так double должен вывестись
Ivan
Vitaliy
Как тип, который вмещает в себя int и double
Berkus
Anatoly
можно, ввести абстракцию Lexer (Tokenizer) и возложить это на его плечи
🐙 Antony
А вам случайно парсеры (Bison, Spirit, и тп) не подойдут для решения проблемы?
🐙 Antony
Они умеют парсить намного быстрее, чем рукописный код
Alexander
Попробуй хэш от строки посчитать и по хэшу дернуть нужный обработчик
RattenKong 🦧🐀🦍️
🐙 Antony
Alexander
Ну у тебя сравнение строк или сравнение хэшей
Alexander
Смотря какая строка
Alexander
И какие требования к быстродействию
Aidar
там есть некий putback но он может и не работать
Anatoly
вообщем, парню явно надо что-то из теории трансляции почитать и все будет гуд
Aidar
если там можно по символу автоматить то есть unget
Berkus
да
getline(is, str);
if (str == "keyword1") process_keyword1(is);
простые rec descent парсеры так и работают
Berkus
т.е. никакой push_back тут не нужен от слова саусэм
Berkus