Husker det forrige konseptet om romkompleksitet, blir Jemalloc () -funksjonen introdusert på C -språket for å øke vår programmeringsytelse.
Hvorfor ble Jemalloc () funksjon introdusert?
Jemalloc () -funksjonen introduseres på C -språket for å forbedre ytelsen til serverprogrammene. Programmereren kontrollerer ethvert serverprogram for å bringe begrepet gjenging. Flere tråder kjøres på en annen måte for å kontrollere serverprogrammet. Jemalloc () -funksjonen hjelper serverprogrammet med å administrere minnekompleksiteten ved å innføre minimumsminne når du utfører disse trådene.
Nå har Jemalloc () -funksjonen sin overskriftsfil på C -språket. Det gir et bedre alternativ å redusere ulempen med Malloc () -funksjonen eller Calloc () -funksjonen når minnet blir tildelt dynamisk for data eller informasjon på C -språket. Tidligere ble disse forhåndsdefinerte funksjonene (malloc (), calloc ()) brukt. Men ettersom disse funksjonene har visse begrensninger relatert til minneprestasjoner, vil Jemalloc () -funksjonen bli introdusert på C -språk.
Hvordan laste ned og installere Jemalloc?
1. For å laste ned den oppdaterte versjonen av Jemalloc, må vi bruke følgende kommando:
$ wget https: // github.com/jemalloc/jemalloc/utgivelser/nedlasting/5.2.0/Jemalloc-5.2.0.tjære.BZ2
Etter å ha lastet ned filen fra det forrige nettstedet, må vi pakke ut filen:
$ tar xjvf jemalloc-5.2.0.tjære.BZ2
2. Deretter åpner vi den nedlastede versjonen av Jemalloc-5.2.0 fil.
$ CD Jemalloc-5.2.0/
3. Etter å ha åpnet filen, vil vi nå konfigurere Jemalloc.
$ ./konfigurere-med-Jemalloc-prefix = je_
For å konfigurere Jemalloc betyr at vi ønsker å indikere i hvilken prosedyre Jemalloc -funksjonen vil bli samlet. Her vil samlingen bli gjort for Malloc i løpet av JE_Malloc, for Calloc i løpet av JE_CALLOC. Dette vil bidra til å unngå forvirrende situasjoner med systemets LIBC -systemfunksjon Malloc.
Konfigurasjonstrinnene er gitt nedenfor, som en form for øyeblikksbilder:
Hvordan kompilere Jemalloc
For å kompilere Jemalloc -filen, må vi installere gjøre. For dette må vi skrive en
$ sudo apt install Make
Når vi gir passordet og trykker på enter, vil merkevaren begynne å installere. Følgende trinn i installasjonsprosessen for å lage er gitt i følgende skjermbilder:
De nylig genererte bibliotekfilene
Etter at konfigurasjonen er gjort, er flere bibliotekfiler installert i LIB -katalogen. De er følgende:
Blant disse bibliotekfilene, Libjemalloc.A og Libjemalloc.så.2 er de viktigste bibliotekfilene. Libjemalloc.En fil representerer en statisk bibliotekfil og libjemalloc.så.2 representerer en dynamisk bibliotekfil.
Bruk av Jemalloc () -funksjonen
Vi må generere følgende tre kataloger:
Kopiere overskriftsfilene
Nå skal vi kopiere Jemalloc.H, Jemalloc_defs.H, og Libjemalloc.A filer inne og inkluderer Lib Jemalloc inne i Jemalloc -biblioteket.
Generere overskriftsfil
Nå vil vi generere en overskriftsfil som heter userdefined_malloc.h. Deretter må vi skrive flere koder i denne overskriftsfilen. Kodene er beskrevet nedenfor:
Programmering Eksempel 1
Opprette en .C -fil for å kjøre koden ved å inkludere “userdefined_malloc.h ”headerfil.
#inkludere
#inkludere
#include “userdefined_malloc.h ”
int main ()
// Dette er pekeren (punktet) som vil holde baseadressen til blokken opprettet
int* poeng;
int n,
j;
// for å få tallene fra brukeren
printf ("Angi tall:");
Scanf ("%d", & n);
printf ("tallene som er lagt inn av brukeren: %d \ n", n);
// tildeling av minnet dynamisk ved bruk av malloc ()
punkt = (int *) malloc (n * sizeof (int));
// sjekke om minnet tildelt av malloc () eller ikke
if (point == null)
printf ("Memory ikke tildelt.\ n ");
Avslutt (0);
ellers
// minnet tildelt
printf ("Memory tildelt vellykket av malloc () \ n");
// for loop for å få elementer i matrisen
for (j = 0; j < n; ++j)
punkt [j] = j + 1;
// Viser alle elementene som er til stede i matrisen
printf ("Elementene i matrisen er:");
for (j = 0; j < n; ++j)
printf ("%d,", punkt [j]);
printf ("\ n");
retur 0;
Generere makefilen
$ gedit makefile
CC = GCC
CFLAGS = -Wall -G
Inkluderer = -i ./inkludere/
Alloc_dep =./lib/libjemalloc.en
Alloc_link = $ (alloc_dep) -lpthread -ldl
Testing: Testing.o
$ (CC) $ (inkluderer) $ (CFLAGS) -O Testing Testing.o $ (alloc_link)
testing.O: Testing.c $ (alloc_dep)
$ (CC) -C $ (inkluderer) $ (CFLAGS) testing.c
ren:
RM -f testingstesting.o
Produksjon
$ make
$ ./testing
Forklaring
Her prøver vi å kjøre et program for Jemalloc () -funksjonen ved å inkludere overskriftsfilen som heter “Userdefined_malloc.h ”. Nå skriver vi inn noen verdier fra brukeren og får minnet dynamisk ved å bruke Malloc () -funksjonen. Malloc () -funksjonen skaper en minneblokk og returnerer deretter adressen. For å skrive ut verdiene, bruker vi en loop. Jemalloc () -funksjonen utfører dette programmet ved å inkludere overskriftsfilen i programmet.
Sjekk programmet ved hjelp av GDB -verktøyet
$ GDB ./testing
Forklaring
For å feilsøke eller se trinn-for-trinn det samme programmet, kan vi bruke “$ GDB ./testing ”. Vi skriver ganske enkelt “$ GDB ./testing ” I ledeteksten og kjør dette programmet ved hjelp av GDB -kommandoer som “R”, “S”, “N”, etc.
Programmering Eksempel 2
Her vil vi prøve å utføre noen operasjoner med dataene som allerede er fjernet med gratis () -funksjonen.
#inkludere
#inkludere
#include "userdefined_malloc.h "
int main ()
int *darray;
int i, n;
printf ("\ n Angi størrelse på array =");
Scanf ("%d", & n);
darray = (int *) malloc (n *sizeof (int));
printf ("\ n før du setter innhold \ n");
for (i = 0; i
printf ("%d \ n", darray [i]);
printf ("\ n Enter %d elementer = \ n", n);
for (i = 0; i
scanf ("%d", & darray [i]);
printf ("\ n innholdet i matrisen er \ n");
for (i = 0; i
printf ("%d \ n", darray [i]);
darray = null;
gratis (Darray);
gratis (Darray);
printf ("\ n etter å ha frigjort minnet \ n");
for (i = 0; i
printf ("%d \ n", darray [i]);
printf ("\ n");
Kompilere og kjøre programmet
$ make
$ ./testing
Kjør ved hjelp av GDB
$ GDB ./testing
Forklaring
I dette spesielle programmeringseksemplet vil vi lage en matrise dynamisk ved hjelp av Malloc () -funksjonen og legge noen verdier fra brukeren ved hjelp av for loop. Deretter skriver vi ut disse verdiene på skjermen. Etter, vil vi få minnet ved å kalle gratis () -funksjonen. Denne funksjonen behandler alt minnet som er opprettet dynamisk av Malloc () -funksjonen.
Etter det, hvis vi prøver å skrive ut disse verdiene igjen, med tanke på at alle verdiene er til stede i matrisen og kjører programmet, vil vi se en viss feil som “Segmenteringsfeil (kjernedumped)”. For etter å ha frigjort minnet, hvis vi igjen vil utføre noen operasjoner på disse verdiene, er det ikke mulig praktisk, ettersom gratis () -funksjonen fjerner alle dataene.
Konklusjon
I denne artikkelen prøver vi å forstå Jemalloc () -funksjonen ordentlig, med start fra nedlastingen, installasjonen, lage headerfil og kjøre et program. Det er veldig nyttig å bruke Jemalloc () -funksjonen for å gjøre livet enklere for andre funksjoner, for eksempel Malloc (), Calloc () -funksjon, RealLOC () -funksjon og gratis () -funksjon. Jemalloc () -funksjonen utfører disse funksjonene i programmet vellykket.