The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Менеджер распределения памяти jemalloc выпущен в виде отдель..."
Отправлено pavlinux, 13-Апр-10 04:25 
Другой пример, где JEMALLOC тормозит!!!!

# gcc -mtune=native -O2 -W main.c -ljemalloc -lrt
# ./a.out
Count: [00] Time: 0.770741600 sec
Count: [01] Time: 1.264327320 sec
Count: [02] Time: 1.301348680 sec
Count: [03] Time: 1.284062600 sec
Count: [04] Time: 1.247971040 sec
Count: [05] Time: 1.251684920 sec
Count: [06] Time: 1.245210760 sec
^C

# gcc -mtune=native -O2 -W main.c -lrt;
# ./a.out
Count: [00] Time: 1.8096401 sec
Count: [01] Time: 0.819417640 sec
Count: [02] Time: 0.814614240 sec
Count: [03] Time: 0.814325360 sec
Count: [04] Time: 0.820493560 sec
Count: [05] Time: 0.814421200 sec
Count: [06] Time: 0.814599600 sec
Count: [07] Time: 0.814985080 sec
^C

Разница в 0.4


/*
*  jemalloc tester (l)2010, Pavlinux Inc.
*
*/
#include <stdio.h>
#include <stdlib.h>
#include <jemalloc/jemalloc.h>
#include <unistd.h>
#include <time.h>

#define TOTAL 0x32
#define SZ 0xFFFF

struct timespec diff(struct timespec start, struct timespec end)
{
    struct timespec temp;
    if ((end.tv_nsec - start.tv_nsec) < 0) {
        temp.tv_sec = end.tv_sec - start.tv_sec - 1;
        temp.tv_nsec = 1000000000 + end.tv_nsec - start.tv_nsec;
    } else {
        temp.tv_sec = end.tv_sec - start.tv_sec;
        temp.tv_nsec = end.tv_nsec - start.tv_nsec;
    }
    return temp;
}

int main(void)
{
    int a, i;                     /*counters */
    float summ = 0.0000000001f;   /* no divide to zero ;) */
    int **ARRAY;              /* ptr to ptrs */
    struct timespec time1, time2; /* timers */

    for (a = 0; a < TOTAL; a++) {

        clock_gettime(CLOCK_REALTIME, &time1); /* begin time */

        posix_memalign((void *) & ARRAY, sysconf(_SC_PAGESIZE), SZ * sizeof(void *));

        for (i = 0; i < SZ; i++) {
            if (!(i % 5)) {
                ARRAY[i] = (int *) malloc(i);
                *ARRAY[i] = i;
                continue;
            }
            if (!(i % 3)) {
                ARRAY[i] = (int *) calloc(1, i);
                *ARRAY[i] = i;
                continue;
            }
            if (!(i % 2)) {
                posix_memalign((void *) & ARRAY[i], sysconf(_SC_PAGESIZE), sizeof(void *));
                *ARRAY[i] = i;
                continue;
            }

            ARRAY[i] = (int *) malloc(i);
            *ARRAY[i] = i;
        }

        for (i = 0; i < SZ; i++) {
            free(ARRAY[i]);
            ARRAY[i] = NULL;
        }
        free(*ARRAY), ARRAY = NULL;
        clock_gettime(CLOCK_REALTIME, &time2);  /* end time */
        printf("Count: [%.2d] Time: %.2zd.%.9zd sec\n", a, diff(time1, time2).tv_sec, diff(time1, time2).tv_nsec);

        /* summary */
        summ += (float)(diff(time1, time2).tv_sec) + ((float)diff(time1, time2).tv_nsec/1000000000.0f);

    }
/* total aand average */
printf("\nTotal: [%.9f]\nAverage: [%.9f]\n\n",summ, summ/TOTAL);
return 0;
}


 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру