Информация об изменениях

Сообщение Re: сделал от 29.11.2022 4:16

Изменено 29.11.2022 5:15 maks1180

Re: сделал
Хух, сделал первую версию за целый день!

Вообщем получился такой результат:

тест №1
1) делаем malloc 100.000 тыс объектов * 40 байт + free всех обхектов
malloc+free = 40 тактов. Т.е. искать дырки не нужно, поэтому он быстро работает. В 6 раз быстрее чем MinGW+gcc.

тест №2
1) содаём 100.000 тыс объектов * 40 байт
2) случайным выбираем 1% объектов (1000 шт)
3) Делаем 2000 циклов { делаем free выбранных объект в п2 + снова делаем malloc 1000 шт }. Измеряем это время, получилось:
free+malloc = 119 тактов. Быстрее всего в 1.40 раз чем MinGW+gcc. Я сильно удивлён, обогнать существенно НЕ получилось.

Здесь мой алгоритм ищёт до последней дырки, возможно поэтому скорость не намного выше чем у gcc.
Странно, что gcc наоборот быстрее работает когда есть дырки, чем когда нужно новую память запрашивать.
Я удивлён, что malloc+free оказались не такими уж и медленными как пугали во многих статьях!

Где-бы почитать про алгоритм malloc/free в gcc ?
Re: сделал
Хух, сделал первую версию за целый день!

Вообщем получился такой результат:

тест №1
1) делаем malloc 100.000 тыс объектов * 40 байт + free всех обхектов
malloc+free = 40 тактов. Т.е. искать дырки не нужно, поэтому он быстро работает. В 6 раз быстрее чем MinGW+gcc.

тест №2
1) содаём 100.000 тыс объектов * 40 байт
2) случайным выбираем 1% объектов (1000 шт)
3) Делаем 2000 циклов { делаем free выбранных объект в п2 + снова делаем malloc 1000 шт }. Измеряем это время, получилось:
free+malloc = 140/190 тактов на x32/x64. Быстрее всего в 1.1-1.4 раз чем MinGW+gcc. Я сильно удивлён, обогнать существенно НЕ получилось.

Здесь мой алгоритм ищёт до последней дырки, возможно поэтому скорость не намного выше чем у gcc.
Странно, что gcc наоборот быстрее работает когда есть дырки, чем когда нужно новую память запрашивать.
Я удивлён, что malloc+free оказались не такими уж и медленными как пугали во многих статьях!

Где-бы почитать про алгоритм malloc/free в gcc ?