Russian Qt Forum
Ноябрь 23, 2024, 00:00 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 ... 3 4 [5]   Вниз
  Печать  
Автор Тема: Хранение "хвостиков"  (Прочитано 24769 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #60 : Сентябрь 26, 2015, 16:27 »

Сначала вы пишете, что вектор ест слишком много памяти. Мы это обсуждаем 5 страниц. Потом оказывается, что "много памяти" - это один (!) лишний указатель, а на самом деле нам важна не память, а скорость аллокации.
Возможно Вас сбило с толку "(иначе достаточно вектора)" - но это имеется ввиду хранить все хвосты в отдельном векторе (а не совать вектор в каждый CData), т.е. никакого противоречия здесь нет.

В общем, как обычно, задача сформулирована через жопу.
...
Собственно, см. мой эмоциональный пост.
Откуда такая нетерпеливость? Зачем раздражаться и срываться на поросячий визг если Вы не увидели решения моментально? Улыбающийся Я его тоже пока не вижу, вот и хорошо, есть о чем подумать.
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #61 : Сентябрь 26, 2015, 16:49 »

Потому что вы пишете хрен пойми  чем. Мне каждую фразу приходится перечитывать по нескольку раз.
Формулируйте задачу четко. Например: struct Data{ vector<float>;} не подходит 1. потому что жрет много памяти (float[N]+3*sizeof(void *)) 2. Потому что медленно аллоцируется. А дальше - "по 1 я хочу float[N]", "по 2 я хочу 0 malloc'ов". А не как обычно - тут "много" памяти, тут "медленно". А то получается, что вам "медленно", но по памяти есть запас, или наоборот, хоть и "медленно", но надо еще сильнее оптимизировать память. Просто вытягивать из вас 5 страниц нахуй никому не вперлось. И ладно если бы 1 раз такое, каждая ваша тема - только через 20 страниц высняется "ТЗ".
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #62 : Сентябрь 26, 2015, 17:37 »

Зачем раздражаться и срываться на поросячий визг если Вы не увидели решения моментально? Улыбающийся Я его тоже пока не вижу, вот и хорошо, есть о чем подумать.
Печально, а у меня уже есть рабочий прототип.

Код
C++ (Qt)
int main()
{
Allocator<float, 4> memman;
 
float *a1 = memman.alloc( 1 );
BOOST_ASSERT( a1 );
float *a2 = memman.alloc( 2 );
BOOST_ASSERT( a2 );
float *a3 = memman.alloc( 3 );
BOOST_ASSERT( a3 );
float *a4 = memman.alloc( 4 );
BOOST_ASSERT( a4 );
float *a5 = memman.alloc( 5 );
BOOST_ASSERT( a5 );
float *a100 = memman.alloc( 100 );
BOOST_ASSERT( a100 );
 
size_t s100 = memman.size( a100 );
BOOST_ASSERT( s100 == 100 );
size_t s5 = memman.size( a5 );
BOOST_ASSERT( s5 == 5 );
size_t s4 = memman.size( a4 );
BOOST_ASSERT( s4 == 4 );
size_t s3 = memman.size( a3 );
BOOST_ASSERT( s3 == 3 );
size_t s2 = memman.size( a2 );
BOOST_ASSERT( s2 == 2 );
size_t s1 = memman.size( a1 );
BOOST_ASSERT( s1 == 1 );
 
memman.free( a2 );
memman.free( a1 );
memman.free( a4 );
memman.free( a3 );
memman.free( a5 );
memman.free( a100 );
 
return 0;
}
 

Цитировать
Allocate pool 1
Allocate pool 2
Allocate pool 3
Allocate pool 4
Allocate heap 5
Allocate heap 100
Size heap 100
Size heap 5
Size pool 4
Size pool 3
Size pool 2
Size pool 1
Free pool 2
Free pool 1
Free pool 4
Free pool 3
Free heap 5
Free heap 100
« Последнее редактирование: Сентябрь 26, 2015, 18:21 от Old » Записан
Страниц: 1 ... 3 4 [5]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.151 секунд. Запросов: 23.