Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Скорость выделения памяти

842
12 декабря 2008 года
sigmov
301 / / 16.09.2008
Анализировал данные по скорости выделения памяти:
Программа:
Код:
clock_t start , end;
    void* P;
#define SIZE 4
    start = clock();
    for(int i=0;i<10000000;i++) P=new char[SIZE];
    end = clock();
    cout<<" time[new] = "<<end-start<<endl;
    cout<<(int)P<<endl;
   
    start = clock();
    for(int i=0;i<10000000;i++) P=malloc(SIZE);
    end = clock();
    cout<<" time[malloc] = "<<end-start<<endl;
    cout<<(int)P<<endl;

    start = clock();
    for(int i=0;i<10000000;i++) P=GlobalAlloc(GMEM_FIXED,SIZE);
    end = clock();
    cout<<" time[GlobalAlloc(GMEM_FIXED)] = "<<end-start<<endl;
    cout<<(int)P<<endl;

    start = clock();
    for(int i=0;i<10000000;i++) P=LocalAlloc(GMEM_FIXED,SIZE);
    end = clock();
    cout<<" time[LocalAlloc(GMEM_FIXED)] = "<<end-start<<endl;
    cout<<(int)P<<endl;

Результаты:

#define SIZE 4:
time[new] = 2453
time[malloc] = 2297
time[GlobalAlloc(GMEM_FIXED)] = 2000
time[LocalAlloc(GMEM_FIXED)] = 2015

#define SIZE 8:
time[new] = 2610
time[malloc] = 2343
time[GlobalAlloc(GMEM_FIXED)] = 2032
time[LocalAlloc(GMEM_FIXED)] = 1984

#define SIZE 16:
time[new] = 2578
time[malloc] = 2453
time[GlobalAlloc(GMEM_FIXED)] = 2157
time[LocalAlloc(GMEM_FIXED)] = 2093

#define SIZE 32:
time[new] = 2781
time[malloc] = 2610
time[GlobalAlloc(GMEM_FIXED)] = 2375
time[LocalAlloc(GMEM_FIXED)] = 2312

Как мы видим, malloc результативнее new на 10%, а ...Alloc на 20%.

Кто функции выделения памяти лучше использовать?
1.8K
12 декабря 2008 года
igor_nf
256 / / 13.12.2006
Цитата: sigmov
Как мы видим, malloc результативнее new на 10%, а ...Alloc на 20%.

Кто функции выделения памяти лучше использовать?



Вопрос далеко не только в скорости. Например, если говорить о С++, то только new может вызывать конструкторы для объектов. Имхо, не стоит зацикливаться на скорости. А различия в показателях скорости - это, насколько я знаю, оттого что каждый из вышеупомянутых интерфейсов является соответствущего рода враппером над другим интерфейсом (_Alloc() -> malloc() ->new).

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог