Сообщение Re: сделал от 29.11.2022 4:16
Изменено 29.11.2022 4:24 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.37 раз чем MinGW+gcc. Я сильно удивлён, обогнать существенно НЕ получилось.
Здесь мой алгоритм ищёт до последнеё дырки, возможно поэтому скорость не намного больше чем у gcc.
Странно, что gcc наоборот быстрее работает когда есть дырки, чем когда нужно новую память запрашивать.
Я удивлён, что malloc+free оказались не такими уж и медленными как пугали во многих статьях!
Где-бы почитать про алгоритм malloc/free в gcc ?
Вообщем получился такой результат:
тест №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.37 раз чем 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 = 119 тактов. Быстрее всего в 1.37 раз чем MinGW+gcc. Я сильно удивлён, обогнать существенно НЕ получилось.
Здесь мой алгоритм ищёт до последней дырки, возможно поэтому скорость не намного выше чем у gcc.
Странно, что gcc наоборот быстрее работает когда есть дырки, чем когда нужно новую память запрашивать.
Я удивлён, что malloc+free оказались не такими уж и медленными как пугали во многих статьях!
Где-бы почитать про алгоритм malloc/free в gcc ?
Вообщем получился такой результат:
тест №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.37 раз чем MinGW+gcc. Я сильно удивлён, обогнать существенно НЕ получилось.
Здесь мой алгоритм ищёт до последней дырки, возможно поэтому скорость не намного выше чем у gcc.
Странно, что gcc наоборот быстрее работает когда есть дырки, чем когда нужно новую память запрашивать.
Я удивлён, что malloc+free оказались не такими уж и медленными как пугали во многих статьях!
Где-бы почитать про алгоритм malloc/free в gcc ?