Použití vlastního memory pool – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Použití vlastního memory pool – C / C++ – Fórum – Programujte.comPoužití vlastního memory pool – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Jiri K.
~ Anonymní uživatel
16 příspěvků
15. 4. 2013   #1
-
0
-

Dobrý den,

 bylo mi řečeno učitelem, že pokud udělám něco takového:

int _tmain(int argc, _TCHAR* argv[])
{
unsigned int count=0;
omp_set_num_threads(5);
int *inThreadCount = new int[25];
for(int i = 0; i < 25; i++)
  inThreadCount[i] = 0;

#pragma omp parallel for
for(int i = 0; i < 1000000000; i++)
{
  int thNum = omp_get_thread_num();
  if((thNum == 0) && (count % 1000000 == 0))
  {
   std::cout << count << "\r";
  }

  Class *trida = new Class();
  delete trida;

  inThreadCount[thNum] += 1;
  if(inThreadCount[thNum] % 100000 == 0)
  {
   #pragma omp atomic
   count += inThreadCount[thNum];
   inThreadCount[thNum] = 0;
  }
}

getchar();
return 0;
}
class Class
{
private:
double *a;
public:
Class()
{
  a = new double[100000];
  a[0] = 10;
}
~Class()
{
  delete a;
}

};

Tak se prý nebude stačit uvolňovat paměť a program spadne. Tak jsem to tedy zkusil udělat, pro jistotu ve dvou vlaknech aby to bylo rychlejsi... a program nejak spadnout nechce, delam neco spatne? :-)

Jde o to, ze to byl argument proto, proc pouzivat memory pool, tak me to zatim nejak nepresvedcilo :-)

Nahlásit jako SPAM
IP: 158.196.194.–
Reklama
Reklama
Jiri K.
~ Anonymní uživatel
16 příspěvků
15. 4. 2013   #2
-
0
-

Jo co mi akorat prijde zvlastni je, ze protoze to spoustim na serveru co ma 20 jader, tak je to celkove celkem pomale a pouziti vice vlaken to dokonce trosku prodluzuje. Tzn. je to proto, ze s tou pameti se neda uz pracovat rychlejc?

Nahlásit jako SPAM
IP: 158.196.194.–
KIIV+42
God of flame
15. 4. 2013   #3
-
0
-

no pokud sem dobre cetl, tak memory pool se pouziva prave kvuli pomalosti malloc a free + ze vznika fragmentace...

ta fragmentace byla problematicka u 32b aplikaci - pokud pamet programu nestaci, volalo se tusim  brk a co je lepsi tak se vola jen pri zvetsovani, nikdy se uz nezmensuje... a u 32b mas pro cely system asi 3GB (+neco na ruzne IO a tak)

u 64b systemu bych s tim obsazenim tolik problemu necekal, protoze v realu se vsechna ta pamet nevyuziva a nepotrebuje a ostatni maji jeste spoustu dalsiho mista v jinejch adresnich prostorech

u 32b systemu pak uz ten obsazeny adresni prostor nemuze nic jinyho pouzit... mas pak 2GB volnyho mista ale nemas ho kam namapovat

Nahlásit jako SPAM
IP: 94.113.92.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 74 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý