Close
Faqja 3 prej 3 FillimFillim 123
Duke shfaqur rezultatin 41 deri 53 prej 53
  1. #41
    Programues Softueresh Maska e edspace
    Anëtarësuar
    04-04-2002
    Vendndodhja
    Filadelfia, SHBA
    Postime
    2,573
    Josif, herë e dytë që po nxjerr rezultate dhe nuk e di nga i nxjerr këto numra se përsëri i ke të gabuar. Megjithatë nuk do bazohemi as tek rezultatet e mia por të werewolf ose ndonjë tjetri që është asnjanës.

    Citim Postuar më parë nga Josif
    Implementimi dinamik:
    0
    0
    10000
    0
    Nga 0 deri në 10000????

    Nejse, i bëra edhe njëherë eksperimentet me të dy programet.
    Këtë radhë programi tënd punonte edhe në windows, prandaj përdora Windows XP, 2.66 GHz

    Rezultatet mesatare:

    1.500 Rekorde
    Statike: 10-15
    Dinamike: 20-25


    3.000 Rekorde
    Statike: 10-15
    Dinamike: 30-40

    6.000 Rekorde
    Statike: 15-20
    Dinamike: 70


    12.000 Rekorde
    Statike: 20-40
    Dinamike: 140-150


    24.000 Rekorde
    Statike: 50
    Dinamike: 280-290


    1.500.000 Rekorde
    Statike: 3.000
    Dinamike: 28.000


    Versioni i ri dinamik është disa herë më i shpejtë se i vjetri por përsëri nuk krahasohet me versionin statik.

    Të gjithë kompjuterat e sotëm kanë 4.3 MB memorje që kërkon programi im dhe mos harro se me ato 4.3 MB po menazhon 1.500.000 rekorde. Kur programi menazhon 1.500.000 rekorde, nuk duhet testuar me 10.000 - 20.000 që e teston ti. Megjithatë edhe me këto testimet e tua, përsëri programi statik ka avantazhet e tij në shpejtësi.

    Krahaso rritjen e programit me matricë statike me atë dinamike.

    Kodi:
    Rekordet:	1.500		24.000		1.500.000
    Statike:	10-15		50		3.000
    Dinamike:	20-25		280-290		28.000
    Programi im nga 24.000 rekorde deri në 1.500.000 rekorde ka një rritje 60 fish, lineare me një rritje 62 fish të rekordeve.
    Prograymi yt nga 24.000 rekorde deri në 1.500.000 rekorde ka një rritje 100 fish, pra, më të madhe se 62 fish i rritjes së rekordeve.

    Citim Postuar më parë nga Josif
    Kodi im eshte me i gjate thjesht ngaqe nuk perdor "librari te gatshme"
    si ti!!! Te vetmet funksione qe kam perdorur jane te doemosdoshmet :feof, fscanf, fprintf, fopen, fclose, clock ,malloc, realloc, free + strcmp. I vetmi funksion qe mund ta beja vete eshte strcmp.
    E pse nuk përdor "libari të gatshme"?

    Dole tek një nga pikat që përmënda më lart:

    Citim Postuar më parë nga Edi
    Në C dhe C++ ka funksione të gatshme dhe shumë të shpejta për renditjen dhe kopjimin e matricave. Mbi matricat janë ndërtuar edhe vargjet (strings) e vjetër të C-së si dhe shumë funksione str__ që i përdorin ato.
    Dmth ti ke qejf të shkrush kod të tepërt që është shkruar më parë? Një nga rregullat elementarë të programimit janë që të mos ri-shpikësh rrotën sa herë që shkruan një program. Një rregull tjetër është që të përdorësh sa më shumë librari të gatshme që janë shkruar nga ekspertët dhe janë optimizuar për të qënë shumë herë më të shpejta se programet e mia dhe të tua.

    Programi yt është në versionin e dytë tani. Gjithashtu ke implementuar qsort që është e gatshme në librarinë e C dhe kodi yt vazhdon të jetë më i gjatë. Të gjitha këto tregojnë se është më e vështirë (për të mos thënë e pamundur) të shkruash kod me matricat dinamike që të jetë po aq i shpejtë sa versioni me matricat statike.

    Versioni dinamik ka avantazhet e tij dhe unë e kam përmëndur këtë që kur postova versionin statik, por eksperimentet më lart tregojnë qartë arsyen pse matricat statike vazhdojnë të përdoren edhe sot. Shpresoj të jesh bindur se nuk kanë dalë jashtë loje siç mendon ti.
    Nëse nuk je bindur, po i lutem werewolf ose ndonjë anëtari tjetër të testojë që të dy programet dhe të sjellin rezultatet e pavarura.

    Herën tjetër të lutem të përqëndrohesh mbi (statike, dinamike) dhe jo mbi (Edi, Josifi). Nuk është nevoja të shkruash me të mëdha se nuk po bëjmë reklama këtu.
    Ndryshuar për herë të fundit nga edspace : 10-01-2005 më 14:53
    Edi

  2. #42
    i/e regjistruar
    Anëtarësuar
    11-10-2004
    Postime
    39
    Po e ndjek me interes kete debat. Do te deshiroja te shkruaja disa shpjegime ne lidhje me arrays dinamike dhe statike por e kam shume te veshtire te gjej disa ore te permbledh mendimet e mia.

    Keshtu qe pa nderhyre ne muhabet po shtoj dy arsye pse duhen arrays statike:

    1. Per string constants.
    p.sh.
    char[] appName = "Useful application";

    2. Ka sisteme ku arrays dinamike nuk mund te krijohen. Mos harroni qe C nuk eshte vetem gjuha e programimit ne Linux ose Wndows. Shume sisteme te tjera e perdorin ate gjuhe. Funksioni malloc() eshte nje funksion librarie. Nese libraria nuk e ka kete funksion, s'ka array dinamike. P.sh. une vjet shkruajta nje program per terminale kartash krediti qe nuk kane malloc(), prandaj perdor vetem array statike.


    Nje perparesi shume me vlere qe kane array dinamike eshte qe nese ke nje pointer te nje array e tille, mund te perdoresh gjithmone krahasimin
    if(pointer == NULL) {....}
    Ne nje array statike pointer eshte gjithmone != NULL, prandaj detyrohesh qe te mbash nje variable tjeter qe tregon nese array ka valid data apo jo.

    Sic thashe edhe me lart kam deshire qe te bej nje shpjegim te plote mbi rolin e array dinamike dhe statike por nuk di a do mundem te bej nje gje te tille. Sidoqofte do u sugjeroja te interesuarve te shikonin se c'pune ben kompilatori per te ndertuar nje array statike dhe c'pune ben per te ndertuar nje array dinamike. Nje array statike ndertohet ne stack, ndersa nje array dinamike ndertohet ne heap. Nuk mund te jesh programues ne C ose C++ nese nuk je ne gjendje te besh dallimin mes stack dhe heap.

    Dhe ne fund, eshte shume mire qe beni matje mbi shpejtesine e programeve, por ne boten reale diferenca ne shpejtesi mes programeve qe perdorin array dinamike me programet qe perdorin array statike eshte shume e vogel. Arsyeja qe shohim nje diference te madhe shpejtesie ne kete rast mund te jete (ky eshte vetem nje sugjerim pasi nuk e kam testuar) fakti qe programi qe perdor array dinamike ben memory allocation ne menyre te gabuar. Nese e di se programi yt do kerkoje shume copa te vogla memorie, teknika e pershtatshme eshte qe te besh allocation te nje cope te madhe memorie (ta zeme nje faqe = 4KB) dhe te perdoresh ate deri sa te mbarohet. Truku eshte qe malloc() duhet te thirret sa me rralle dhe realloc() mundesisht kurre. Kur therret malloc() pervec faktit qe ke nje fuksion call, ky funksion do shkoje te sistemi operativ (pra te pakten edhe nje tjeter funksion call). Sistemi operativ kerkon per memorie te lire. Algoritmi eshte i tille qe perpiqet qe memoria te jete sa me pak e fragmentuar. Pra edhe zbatimi i algoritmit kerkon ca kohe. E keshtu me radhe, besoj se eshte e qarte ideja. Kurse ne rastin e array statike, sistemi nuk ka nevoje te beje shume pune pasi memoria eshte ne stack qe eshte linear.

  3. #43
    Analog Brain Maska e josif
    Anëtarësuar
    26-02-2004
    Vendndodhja
    madagaskar
    Postime
    245
    Edspace, versioni i dyte i implementimit dinamik duket qe eshte me mire se i pari, por ne te njejten kohe eshte edhe me i mire se implementimi statik.

    U pa qarte se implementimi statik harxhon aq shume memorie

    1500000*sizeof(rekord) + S
    sizeof(record)= 20*sizeof(char) + sizeof(int) + sizeof(char *)
    S= no_rekordeve_aktuale* (100*sizeof(char) + sizeof(char *)

    E njejta hapesire mundet fare mire te mbaje emrat e gjithe shqipetareve ne nje array dinamik !

    Per sa i perket testimeve te tua besoj se nuk jane te sakta,( ose kompjuteri im
    ka inat personal me ty ). Ceshtja eshte se tek ti programet here nuk kompilohen, here nuk egzekutohen, here te tjera dalin statistika stratosferike etj,etj... , ndoshta ngaqe perdor windows apo ...
    Ndryshuar për herë të fundit nga josif : 12-01-2005 më 11:51
    He walks among us, but He is not one of us ...

  4. #44
    Analog Brain Maska e josif
    Anëtarësuar
    26-02-2004
    Vendndodhja
    madagaskar
    Postime
    245
    Besoj se tashme tema eshte bere e merzitshme dhe duhet te mbyllet.

    Si perfundim u duk se implementimi statik eshte i shpejte por harxhon shume vend.

    Implementimi dinamik eshte gjithashtu i shpejte dhe nuk harxhon asnje gram te tepert vendi.

    Shpresoj qe Edspace te mos i kete marre personale kritikat dhe shpresoj gjithashtu qe te kete qene nje debat konstruktiv.
    He walks among us, but He is not one of us ...

  5. #45
    Programues Softueresh Maska e edspace
    Anëtarësuar
    04-04-2002
    Vendndodhja
    Filadelfia, SHBA
    Postime
    2,573
    Josif, kompjuteri qysh i nxjerr njëherë rezultatet i nxjerr dhe herën e dytë.
    Mqns nuk paske besim në rezultatet e mia, pse nuk shikon rezultatet e werewolf?
    Pse për programin e parë testet ishin vetëm me 3.000? Pse për programin e dytë testet e shkonin deri në 24.000? Pse nuk sjell këtu rezultatet për 100.000 ose 1.000.000 rekorde?

    Versioni i parë i programit tënd kishte gabim me funksionin _delete(). E provova me Dev-C++ 4.9.9.1 si dhe me MS Visual Studio .NET 2003. Në të dy përpiluesit ishte i njëjti gabim. Programi përpilohej pa gabime por gjatë ekzekutimit, nxirrte gabim në leximin e memorjes. Të njëjtin gabim e vura re në 3 kompjutera të ndryshëm.

    Megjithatë, hoqa dorë nga kompjuterat me windows dhe përdora kompjuterin kryesor të shkollës (SUN, Ultra-Sparc, UNIX) ku testohen të gjitha programet e studentëve. Rezultatet i pe vetë.

    Ti e ke kuptuar që nuk diskuton dot për shpejtësinë dhe je hedhur tani tek rezervimi i memorjes. Këtë problem të matricave statike e dimë të gjithë por ti po e ekzagjeron shumë. Mos vallë matricat dinamike harxhojnë më pak memorje me 1.500.000 rekorde?

    Ky diskutim filloi nga komenti yt se matricat statike janë "humbje kohe" dhe unë të përmënda avantazhet e matricave statike dhe pse lind nevoja ti përdorësh ato edhe pse janë të kufizuara.

    Të përmënda shpejtësinë dhe kjo deri tani është e vërtetë sepse ti nuk ke shkruajtur një program më të shpejtë. Të përmënda që matricat statike janë të lehta për t'u përdorur dhe kjo u vërtetua nga rreshtat e kodit që ke shkruajtur, në 2-3 versione të ndryshme.
    Iliri të dha plot arsye të tjera pse matricat statike janë të dobishme dhe ti vazhdon të këmbëngulësh.

    Në kompjuterat e sotëm memorja është me bollëk dhe ky është një avantazh për matricat statike. Qëllimi kryesor për programet është të ekzekutohen sa më shpejt dhe të lirojnë procesorin dhe në këtë drejtim matricat statike janë të shkëlqyera.

    Të gjitha këto më lart duhet të të bindin se matricat statike nuk janë "humbje kohe".
    Edi

  6. #46
    Analog Brain Maska e josif
    Anëtarësuar
    26-02-2004
    Vendndodhja
    madagaskar
    Postime
    245
    Citim Postuar më parë nga edspace
    Josif, kompjuteri qysh i nxjerr njëherë rezultatet i nxjerr dhe herën e dytë.
    Mqns nuk paske besim në rezultatet e mia, pse nuk shikon rezultatet e werewolf?
    Pse për programin e parë testet ishin vetëm me 3.000? Pse për programin e dytë testet e shkonin deri në 24.000? Pse nuk sjell këtu rezultatet për 100.000 ose 1.000.000 rekorde?

    Versioni i parë i programit tënd kishte gabim me funksionin _delete(). E provova me Dev-C++ 4.9.9.1 si dhe me MS Visual Studio .NET 2003. Në të dy përpiluesit ishte i njëjti gabim. Programi përpilohej pa gabime por gjatë ekzekutimit, nxirrte gabim në leximin e memorjes. Të njëjtin gabim e vura re në 3 kompjutera të ndryshëm.

    Megjithatë, hoqa dorë nga kompjuterat me windows dhe përdora kompjuterin kryesor të shkollës (SUN, Ultra-Sparc, UNIX) ku testohen të gjitha programet e studentëve. Rezultatet i pe vetë.

    Ti e ke kuptuar që nuk diskuton dot për shpejtësinë dhe je hedhur tani tek rezervimi i memorjes. Këtë problem të matricave statike e dimë të gjithë por ti po e ekzagjeron shumë. Mos vallë matricat dinamike harxhojnë më pak memorje me 1.500.000 rekorde?

    Ky diskutim filloi nga komenti yt se matricat statike janë "humbje kohe" dhe unë të përmënda avantazhet e matricave statike dhe pse lind nevoja ti përdorësh ato edhe pse janë të kufizuara.

    Të përmënda shpejtësinë dhe kjo deri tani është e vërtetë sepse ti nuk ke shkruajtur një program më të shpejtë. Të përmënda që matricat statike janë të lehta për t'u përdorur dhe kjo u vërtetua nga rreshtat e kodit që ke shkruajtur, në 2-3 versione të ndryshme.
    Iliri të dha plot arsye të tjera pse matricat statike janë të dobishme dhe ti vazhdon të këmbëngulësh.

    Në kompjuterat e sotëm memorja është me bollëk dhe ky është një avantazh për matricat statike. Qëllimi kryesor për programet është të ekzekutohen sa më shpejt dhe të lirojnë procesorin dhe në këtë drejtim matricat statike janë të shkëlqyera.

    Të gjitha këto më lart duhet të të bindin se matricat statike nuk janë "humbje kohe".

    Ceshtja e pare eshte se ti nuk e ke akoma te qarte arsyen pse u krijua ky debat.
    Une nuk thashe qe matricat statike nuk jane te dobishme, por menyra se si jane implementuar nuk eshte e pershtatshme, pasi emri eshte pointer konstant, nuk resize-ohen etj,etj...

    Ti ngule kembe qe ato jane e vetmja menyre per te zgjidhur problemin, dhe une te demostrove qe e kishe gabim. Shkruajta nje kod te castit, pa shume pretendime performance, vetem per te te treguar qe eshte e mundur.

    Ne rastin e pare programi jot ishte me i shpejte per shkak te quick-sort, ne te dytin NUK eshte me i shpejte dhe mund ta provosh gjithe diten.


    *) Me fal se kam bere nje gabim ne rezultatet e nje posti te mesiperm:

    /*****************************************/
    Ne rastin e nje inputi me 100 rekorde:

    sizeof(void *)=4, sizeof(char)=1,sizeof(int)=4

    Hapesira= 1500000*sizeof(rekord) + S
    sizeof(record)= 20*sizeof(char) + sizeof(int) + sizeof(char *)= 28
    S= no_rekordeve_aktuale*( 100*sizeof(char) + sizeof(char *)) = 10400

    Hapesira= 1500000*28 + 10400 = 40 MBytes

    Ndersa programi im okupon:

    Hapesira= 100*sizeof(rekord)
    sizeof(rekord)= sizeof(char*) + sizeof(int)
    +gjatesia_mesatare_e_emrave*sizeof(char)= 18
    Hapesira= 1800 Bytes= 1,7 MBytes

    Pra NO COMMENT!!!

    Une testoj madhesi mbi normale te inputit 0 - 20000, por kodi im eshte i afte punoje edhe pas 1500000 rekordesh, kurse i joti jo. Dhe nese nuk ke 40 Mb RAM programi jot jep "segmentation fault".

    /***************************************//

    Testi jot i fundit ishte jo realist:

    Rekordet: 1.500 24.000 1.500.000
    Statike: 10-15 50 3.000
    Dinamike: 20-25 280-290 28.000
    2*here 5*here 9*here

    Midis 1500-24000 raporti i rritjes eshte 5/2 ndersa inputi u rrit 16 here
    Midis 24000-1500000 raporti i rritjes eshte 9/5 ndersa inputi u rrit 62.5 here

    Midis 1500-24000 raporti i rritjes eshte me i madh se midis 24000-1500000

    Duket qarte qe midis 24000-1500000 raporti i rritjes duhet te ishte shume me i
    madh, pra analizat e tua jane totalisht irrelevante!!!
    /*****************************************/

    /*****************************************/
    Une i mbaj rekordet ne nje array dinamik, te cilin duhet ta realloc-oj pas cdo leximi inputi, perndryshe nuk quhet me dinamik.
    Pas 100.000 rekordesh une duhet te kopjoj 100.000 rekorde per ta reallokuar.
    Kjo eshte arsyeja pse perdor inpute < 100.000. Programi im sic e permenda punon me cfaredolloj madhesie inputi, por dihet qe realet jane pak a shume te kufizuara.
    /*****************************************/

    Per sa i perket funksionit delete ai punon ne shume versione compilerash, por pikerisht nga ankesat qe mund te kishe ne versionin e dyte nuk e implementova.
    Kur nje pointer kalon si variabel ne nje funksion atehere ndryshimet ne memorjen e treguar nga pointeri baze, brenda funksionit, behen nepermjet kopjes se pointerit. Shumica e compiler-ave modern ua atribojne qe te dy pointerave ate adrese, disa te tjere jo.
    Ky eshte nje problem preference qe une per arsye thjeshtesie nuke e shpjegova, pasi kujtova se te gjithe kompilerat e sotshem e kane kete veti.
    Ndryshuar për herë të fundit nga josif : 12-01-2005 më 13:14
    He walks among us, but He is not one of us ...

  7. #47
    Analog Brain Maska e josif
    Anëtarësuar
    26-02-2004
    Vendndodhja
    madagaskar
    Postime
    245
    Citim Postuar më parë nga IlirDeda
    Po e ndjek me interes kete debat. Do te deshiroja te shkruaja disa shpjegime ne lidhje me arrays dinamike dhe statike por e kam shume te veshtire te gjej disa ore te permbledh mendimet e mia.

    Keshtu qe pa nderhyre ne muhabet po shtoj dy arsye pse duhen arrays statike:

    1. Per string constants.
    p.sh.
    char[] appName = "Useful application";

    2. Ka sisteme ku arrays dinamike nuk mund te krijohen. Mos harroni qe C nuk eshte vetem gjuha e programimit ne Linux ose Wndows. Shume sisteme te tjera e perdorin ate gjuhe. Funksioni malloc() eshte nje funksion librarie. Nese libraria nuk e ka kete funksion, s'ka array dinamike. P.sh. une vjet shkruajta nje program per terminale kartash krediti qe nuk kane malloc(), prandaj perdor vetem array statike.


    Nje perparesi shume me vlere qe kane array dinamike eshte qe nese ke nje pointer te nje array e tille, mund te perdoresh gjithmone krahasimin
    if(pointer == NULL) {....}
    Ne nje array statike pointer eshte gjithmone != NULL, prandaj detyrohesh qe te mbash nje variable tjeter qe tregon nese array ka valid data apo jo.

    Sic thashe edhe me lart kam deshire qe te bej nje shpjegim te plote mbi rolin e array dinamike dhe statike por nuk di a do mundem te bej nje gje te tille. Sidoqofte do u sugjeroja te interesuarve te shikonin se c'pune ben kompilatori per te ndertuar nje array statike dhe c'pune ben per te ndertuar nje array dinamike. Nje array statike ndertohet ne stack, ndersa nje array dinamike ndertohet ne heap. Nuk mund te jesh programues ne C ose C++ nese nuk je ne gjendje te besh dallimin mes stack dhe heap.

    Dhe ne fund, eshte shume mire qe beni matje mbi shpejtesine e programeve, por ne boten reale diferenca ne shpejtesi mes programeve qe perdorin array dinamike me programet qe perdorin array statike eshte shume e vogel. Arsyeja qe shohim nje diference te madhe shpejtesie ne kete rast mund te jete (ky eshte vetem nje sugjerim pasi nuk e kam testuar) fakti qe programi qe perdor array dinamike ben memory allocation ne menyre te gabuar. Nese e di se programi yt do kerkoje shume copa te vogla memorie, teknika e pershtatshme eshte qe te besh allocation te nje cope te madhe memorie (ta zeme nje faqe = 4KB) dhe te perdoresh ate deri sa te mbarohet. Truku eshte qe malloc() duhet te thirret sa me rralle dhe realloc() mundesisht kurre. Kur therret malloc() pervec faktit qe ke nje fuksion call, ky funksion do shkoje te sistemi operativ (pra te pakten edhe nje tjeter funksion call). Sistemi operativ kerkon per memorie te lire. Algoritmi eshte i tille qe perpiqet qe memoria te jete sa me pak e fragmentuar. Pra edhe zbatimi i algoritmit kerkon ca kohe. E keshtu me radhe, besoj se eshte e qarte ideja. Kurse ne rastin e array statike, sistemi nuk ka nevoje te beje shume pune pasi memoria eshte ne stack qe eshte linear.
    Ilir faleminderit per postimin.

    Ne rradhe te pare pamundesia dhe mospatja e kushteve si ne rastet e
    - mosgjetjes se librarise stdlib.h
    - moslejimit te krijimit te array-eve dinamike
    jane varferi dhe jo supremaci.

    E kam shprehur shume here qe per mendimin tim emri i nje array-i nuk duhet te
    ishte variabel konstante pasi ka shume kufizime.

    Ti permende rastin qe arrayet statike != NULL, Kjo eshte e vertete dhe disa here ndodhin probleme nese funksioneve te string.h u con nje NULL string.

    Eshte e sakte qe array-et statike ndertohen ne stack, ndersa dinamiket ne heap.
    Por stack memory ne disa OS eshte i kufizuar, kjo mund te kontrollohet me ane te komandes "limit" ne Unix. Dhe per me teper nuk ka difference te madhe shpejtesie per te "fetch"-ur nje elemeny qofte ai ne run-time stack ose heap.

    Per sa i perket realloc dhe malloc, besoj se nuk e ke ndjekur me kujdes temen.

    Realloc eshte krijuar duke perdorur malloc.Realloc perdor proceduren:i malloc-on nje array me madhesine e re dhe e kopjon te vjetren tek e reja e mallokuar. Per te patur nje array dinamik qe rritet ne menyre te paparashikuar reallokimi eshte i domosdoshem, si ne kete rast. Me lart kam shkruar nje algoritm se si mund te rrallohet realloc dhe malloc.

    Implementimi mund te thjeshtohet duke mos perdorur realloc dhe malloc shpesh por synimi ishte ndertimi i nje programi 100% dinamik.
    He walks among us, but He is not one of us ...

  8. #48
    Programues Softueresh Maska e edspace
    Anëtarësuar
    04-04-2002
    Vendndodhja
    Filadelfia, SHBA
    Postime
    2,573
    Josif, e shoh që e ke nxjerrë diskutimin nga shinat dhe tani nuk po krahason matricat statike me dinamike por po krahason kodin e Edit me kodin e Josifit.

    Gjithë ky "vrull" që ke marrë tregon se debati të ka hyrë në kokë dhe ky është qëllimi i debatit, apo jo?
    Problemet e tjera janë thjesht çështje kokëfortësi, karakteri, numri të syzeve, etj dhe nuk kanë vlerë në forumin e informatikës.

    Citim Postuar më parë nga Josif
    Ceshtja e pare eshte se ti nuk e ke akoma te qarte arsyen pse u krijua ky debat.
    Une nuk thashe qe matricat statike nuk jane te dobishme, por menyra se si jane implementuar nuk eshte e pershtatshme, pasi emri eshte pointer konstant, nuk resize-ohen etj,etj...
    Ja se si u fute në këtë diskutim:

    Citim Postuar më parë nga Josif
    Nuk e di mendimin tuaj por array-et statike ne C per mendimin tim jane nje
    humbje kohe plus qe jane edhe te papershtatshem. Te pakten duhet te moderohen pak.
    ...
    P.S: Personalisht nuk perdor fare array statike, por gjithsesi me cudit pse akoma jane ne qarkullim.
    Më fal nëse nuk e kam lexuar siç duhet.

    Citim Postuar më parë nga Josif
    Ti ngule kembe qe ato jane e vetmja menyre per te zgjidhur problemin, dhe une te demostrove qe e kishe gabim.
    Unë paskam ngulur këmbë që është e vetmja mënyrë?!
    Si fillim unë shkruajta kodin për matricat statike, si dhe kodin për Pemët, 2 mënyra. Gjithashtu përmënda disa herë që kodi mund të rezervonte më pak memorje duke përdorur matricat dinamike:

    Citim Postuar më parë nga Edi
    Zgjidhja tjetër për të kursyer memorje (jo për të hequr kufizimet) është me matrica dinamike por ka komplikime të tjera.
    Citim Postuar më parë nga Edi
    Një zgjidhje pak më e mirë do ishin matricat dinamike, por edhe këto kanë problemet e tyre.


    Citim Postuar më parë nga Josif
    Shkruajta nje kod te castit, pa shume pretendime performance, vetem per te te treguar qe eshte e mundur.
    Ideja ishte që ti të më bindje mua që matricat dinamike ishin më të shpejta, prandaj kodi nuk duhet të ishte i çastit. Megjithatë e provove disa herë dhe ende nuk ke arritur shpejtësinë e matricave statike.


    Citim Postuar më parë nga Josif
    Ne rastin e pare programi jot ishte me i shpejte per shkak te quick-sort, ne te dytin NUK eshte me i shpejte dhe mund ta provosh gjithe diten.
    Kush ka pak kohë, le të testojë programet dhe të sjellë rezultatet këtu.



    Citim Postuar më parë nga Josif
    ...
    Hapesira= 1500000*28 + 10400 = 40 MBytes
    ...
    Hapesira= 1800 Bytes= 1,7 MBytes
    ...
    Une testoj madhesi mbi normale te inputit 0 - 20000 ...
    Je i falur për gabimet në llogaritjen e memorjes. Edhe unë bëj gabime kur jam me nerva.
    Lexo citimet e mia më lart për të parë se unë vetë e kam shkruajtur qe me diskutimet e para që matricat statike marrin shumë memorje.
    Ti e teston programin me 20.000 rekorde dhe thua që janë "mbi normale". 20.000 rekorde për një databazë nuk janë asgjë, por edhe sikur të jenë, pse i bën llogaritë me 1.500.000 rekorde që sipas teje na qënkan "mbi mbi mbi mbi mbi...normale"? Më fal përsëri se nuk kam kohë të shkruaj (1.500.000 / 20.000 ) = 75 "mbi".

    Midis 1500-24000 raporti i rritjes eshte 5/2 ndersa inputi u rrit 16 here
    Midis 24000-1500000 raporti i rritjes eshte 9/5 ndersa inputi u rrit 62.5 here

    Midis 1500-24000 raporti i rritjes eshte me i madh se midis 24000-1500000

    Duket qarte qe midis 24000-1500000 raporti i rritjes duhet te ishte shume me i
    madh, pra analizat e tua jane totalisht irrelevante!!!
    shënim: irrelevante ===shqip===> e pavend, e parëndësishme

    U hodha nga 24.000 në 1.500.000 sepse nuk kisha kohë ti zija me radhë 24, 50, 55, 60, 65....1.500.
    Rritja e rekordeve ishte e njëjtë për të dy programet dhe eksperimenti është mëse i vlefshëm për të treguar rritjen në kohë. Programi statik pati një rritje 60 fish, ndërsa ai dinamik një rritje 100 fish. Ç'ka këtu për "totalisht irrelevante"?

    Citim Postuar më parë nga Josif
    Une i mbaj rekordet ne nje array dinamik, te cilin duhet ta realloc-oj pas cdo leximi inputi, perndryshe nuk quhet me dinamik.
    Pas 100.000 rekordesh une duhet te kopjoj 100.000 rekorde per ta reallokuar.
    Kjo eshte arsyeja pse perdor inpute < 100.000. Programi im sic e permenda punon me cfaredolloj madhesie inputi, por dihet qe realet jane pak a shume te kufizuara.
    Të paktën e ke kuptuar një disavantazh të matricave dinamike. Atëherë, pse është kaq e vështirë të pranosh se matricat statike nuk e kanë këtë problem?


    Nuk shoh vlerë në përsëritjen e citimeve dhe diskutimeve personale, prandaj po tërhiqem nga diskutimi me ty. Do vazhdoj diskutimin vetëm me ata që përqëndrohen mbi temën. Faleminderit për diskutimin!
    Ndryshuar për herë të fundit nga edspace : 12-01-2005 më 14:46
    Edi

  9. #49
    Analog Brain Maska e josif
    Anëtarësuar
    26-02-2004
    Vendndodhja
    madagaskar
    Postime
    245
    Me vjen keq qe nuk e paske kuptuar akoma qe debati dhe zenkat e bejne jeten me te gjalle. Perndryshe ne vend te "Forum" do te quhej "Kishe".
    Ndryshuar për herë të fundit nga josif : 12-01-2005 më 15:07
    He walks among us, but He is not one of us ...

  10. #50
    Programues Softueresh Maska e edspace
    Anëtarësuar
    04-04-2002
    Vendndodhja
    Filadelfia, SHBA
    Postime
    2,573
    Këtu është problemi. Ti futesh në forum për të gjallëruar jetën. Unë futem në forum për të mësuar diçka nga të tjerët dhe me shpresën se të tjerët mësojnë diçka nga unë. Jam mëse i kënaqur nga diskutimi që u bë por nuk shoh dobi në vazhdimin e zënkave, sado gjallëruese qofshin.
    Edi

  11. #51
    63n700 Maska e werewolf
    Anëtarësuar
    03-10-2003
    Vendndodhja
    Rome
    Postime
    164
    josif, shife mire pc tend, se nuk eshte mire(ca i ke dhene per te pire???)!!!
    nese numri i rekordeve eshte i madh (une e provova 90.000 + ) dinamiku fillon e ngadalesohet shpejt, kurse te statiku ndryshimi eshte me i vogel, dhe eshte e kote te vazhdohet te diskutohet per keto dy programet. nese ti ke ndo1 program tjeter dinamik me te shpejte.....



    edi, nuk i kam vene shume re si mbushet matrica, po nese shkruan ose lexon elementet ne nje matrice me dimensione te tilla (sipas josifit te 40 mb) eshte pak problem!
    sistemi operativ nuk i mban te gjitha faqet (pages) e procesit ne ram gjate ekzekutimit (te pakten me ate dimension procesi) dhe si rezultat behet swap here pas here, dhe prestacionet e programit bien!
    The truth may be out there, but lies are inside your head.

  12. #52
    Analog Brain Maska e josif
    Anëtarësuar
    26-02-2004
    Vendndodhja
    madagaskar
    Postime
    245
    Citim Postuar më parë nga werewolf
    josif, shife mire pc tend, se nuk eshte mire(ca i ke dhene per te pire???)!!!
    nese numri i rekordeve eshte i madh (une e provova 90.000 + ) dinamiku fillon e ngadalesohet shpejt, kurse te statiku ndryshimi eshte me i vogel, dhe eshte e kote te vazhdohet te diskutohet per keto dy programet. nese ti ke ndo1 program tjeter dinamik me te shpejte.....



    edi, nuk i kam vene shume re si mbushet matrica, po nese shkruan ose lexon elementet ne nje matrice me dimensione te tilla (sipas josifit te 40 mb) eshte pak problem!
    sistemi operativ nuk i mban te gjitha faqet (pages) e procesit ne ram gjate ekzekutimit (te pakten me ate dimension procesi) dhe si rezultat behet swap here pas here, dhe prestacionet e programit bien!
    Testet e mija ishin < 24000 dhe une kete e sqarova. Provoje me kete input dhe ,(nese nuk do te jesh ti i pire), do te bindesh qe eshte me i shpejte.
    He walks among us, but He is not one of us ...

  13. #53
    forever hers Maska e Eagle
    Anëtarësuar
    21-07-2002
    Vendndodhja
    boston-temporarly
    Postime
    505
    Citim Postuar më parë nga edspace
    Josif, e shoh që e ke nxjerrë diskutimin nga shinat dhe tani nuk po krahason matricat statike me dinamike por po krahason kodin e Edit me kodin e Josifit.

    Gjithë ky "vrull" që ke marrë tregon se debati të ka hyrë në kokë dhe ky është qëllimi i debatit, apo jo?
    Problemet e tjera janë thjesht çështje kokëfortësi, karakteri, numri të syzeve, etj dhe nuk kanë vlerë në forumin e informatikës.
    Ti edspace jam i sigurte se mund te mbulosh me se miri dhe ndarje te tjera te forumit si Filozofi-Sociologji-Psikollogji apo Pyetni Psikollogun dhe ndoshta edhe ate ndarjen Toleranca ...
    Ti djale ke te ardhme sidomos per sa kohe nuk do perdoresh syza me numer.
    nuk e duroj dot i-ne pa pike.

Faqja 3 prej 3 FillimFillim 123

Tema të Ngjashme

  1. Strukturat paralele të Serbiisë
    Nga Sabriu në forumin Çështja kombëtare
    Përgjigje: 1
    Postimi i Fundit: 20-03-2009, 04:27
  2. Listat e Zgjedhesve
    Nga shefqeti11 në forumin Problematika shqiptare
    Përgjigje: 0
    Postimi i Fundit: 14-02-2007, 06:14
  3. Zgjidhet kriza elektorale, arrihet marëveshja në zyrën e presidentit Moisiu
    Nga Xhuxh Xhumaku në forumin Tema e shtypit të ditës
    Përgjigje: 312
    Postimi i Fundit: 03-02-2007, 14:05
  4. Kuvendi që na la trashëgim ADN-në e Dushkut
    Nga Kosovari_78_Ca në forumin Tema e shtypit të ditës
    Përgjigje: 1
    Postimi i Fundit: 22-05-2005, 01:24

Regullat e Postimit

  • Ju nuk mund të hapni tema të reja.
  • Ju nuk mund të postoni në tema.
  • Ju nuk mund të bashkëngjitni skedarë.
  • Ju nuk mund të ndryshoni postimet tuaja.
  •