Close
Faqja 2 prej 2 FillimFillim 12
Duke shfaqur rezultatin 11 deri 20 prej 20
  1. #11
    i/e regjistruar Maska e hot_prinz
    Anėtarėsuar
    29-05-2007
    Vendndodhja
    Frankfurt
    Postime
    9,878
    tani pasi qe i kompilova gjitha per x64, shkuan gjerat ne vendin e tyre.
    Edhe vete fillova te dyshoj pse C# eshte me i ngadalshem se Java e pse Java me e shpejte se C++, problemi ishte se disa programe ishin te kompiluara ne 32 e ca ne 64bit.
    Personalisht per RAD me shume me pelqen C# se Java, edhe ate vetem per intellisense dhe debugger te VS.
    Per Java ende nuk kam hasur ne nje debugger ala VS per C#.
    Fotografitė e Bashkėngjitura Fotografitė e Bashkėngjitura  

  2. #12
    i/e regjistruar Maska e hot_prinz
    Anėtarėsuar
    29-05-2007
    Vendndodhja
    Frankfurt
    Postime
    9,878
    Duke i ndryshuar instruksionet ne loop nga:

    Kodi:
    progresion += i;
    buffer[i % buffsize] += progresion;
    ne:

    Kodi:
    *(pBuffer + i % buffsize) += progresion += i;
    C# behet me i shpejte per 120 ms, C++ dhe Java nuk ndryshojne dukshem. Ne pergjithesi nuk dallojne dukshem nga njera tjetra, per ~200 ms ne me shume 500 mil instruksione.

    Ne vazhdim vetem per statistika dhe kodet e PHP dhe Javascript, pasi qe Browser ose PHP nxjerrin pyetje rreth kohezgjatjes se scriptit, ndryshova zgjatjen e instruksioneve ne 50 mil (1/10) = 8sek *10 = 80sek per 500 mil instruksione.

    PHP:
    Kodi:
    ";
        echo "koha: ".$diferenca."

    "; for ($i = 0; $i < $buffsize; $i++) echo $buffer[$i]."
    "; ?>
    JavaScript:
    Kodi:
     
    	 
    		Progresion 
    		
    
    
    
    
    PHP dhe JavaScript jane pothuaj te ngjajshme kurse se bashku ~50 here me te ngadalshme se C++,..
    Fotografitė e Bashkėngjitura Fotografitė e Bashkėngjitura    

  3. #13
    i/e regjistruar
    Anėtarėsuar
    17-11-2006
    Postime
    81
    Po, pak a shume keto rezultate do duhej te ishin. Por jane vetem ne x64. Ne x86 versionet VM ngelen ~4 here me te ngadalte. Nderkohe qe do duhej t'i pershtateshin me mire procesorit 'host' se sa programet 'native', qe kompilohen nje here e mire.

  4. #14
    i/e regjistruar
    Anėtarėsuar
    17-11-2006
    Postime
    81
    Sot edhe skriptet janė “just-in-time-compiled”.
    JavaScript e PHP mund tė ekzekutoheshin me njė shpejtėsi tė pėrafėrt me Java apo .NET.
    Njė nga problemet e tyre ėshtė se s’kanė tipe.
    Duke mos pasur ‘tipe’, nė ē’do rast pėrdorin tipin qė ėshtė me fleksibėl, qė nė rastin e numrave i bie tė jetė ‘double’. Por veprimet me numra me presje dhjetore (pėr mė tepėr varianti me precizion mė tė lartė) janė shumė mė tė ngadaltė se veprimet me numra tė plotė.

    Observimi tjetėr nga shembulli ėshtė se sot procesorėt ekzekutojnė pak a shumė 1 instruksion pėr ē’do “rrahje tė zemrės” sė procesorit. Dhe jo njė instruksion asembleri – por njė instruksion tė njė gjuhe tė zhvilluar (qė pėrfaqėson disa instruksione makine).

    Konkretisht loop-i pėrmban:

    1. i <= 0x1FFFFFFF
    2. for
    3. progresion += i
    4. i % buffsize
    5. buffer[]
    6. += progresion
    7. i++

    7 instruksione * ~500 mil / 1.25s ~== 2.67 GHz => pak a shumė shpejtėsia e procesorit.

    ~200 ms ne me shume 500 mil instruksione mund tė duken si “asgjė”. Por ~200ms nė ~1s janė ~20% (nė rastin e kėtij shembulli).
    Por prapė 20% s’ėshtė asgjė sepse procesorėt ē’do vit bėhen mė tė shpejtė. Apo jo?
    Gabim. Procesorėt ka vite qė nuk po bėhen mė tė shpejtė.

    Shpejtėsia mė e madhe nė natyrė ėshtė shpejtėsia e dritės. Dhe ėshtė mahnitėse tė konstatosh se procesorėt e sotėm (pėr kompjutera personal) arrijnė tė mbledhin kėta dy numra: 2942947 + 129489 (“random typing”) aq shpejtė, sa drita mezi arrin tė bėjė 10 cm rrugė ndėrkohė.
    Dhe drita lėviz aq shpejtė, sa i bie rreth e qark Tokės 7 herė e gjysmė brenda njė sekonde.

    Deri mė sot merrej si e mirėqenė se prodhuesit e hardware-it e kishin pėr detyrė tė prodhonin kompjutera mė tė shpejtė, 2 herė mė tė shpejtė, ē’do 2 vjet.

    Nė debatet (e zjarrta) midis gjuhėve/feve tė ndryshme tė programimit, pėrkrahėsit e gjuhėve ‘mė produktive, por me performancė mė tė ulėt’ shpesh herė pėrdorin argumentin:

    kostoja e kompjuterėve ėshtė shumė mė e vogėl se kostoja e programeve, dhe ata (kompjuterat) sa vijnė e bėhen mė tė shpejtė, kėshtu qė ėshtė mė ekonomike:
    - software me kosto tė ulėt + hardware mė i shpejtė (dhe disa qindra $ mė i shtrenjtė) se sa
    - software me performancė mė tė lartė (potencialisht qindra mijėra $ mė i shtrenjtė) + kompjutera mė tė ngadaltė (dhe lirė).

    Nė fakt ky argument ka sens vetėm kur programi-i instalohet nė njė numėr relativisht tė vogėl kompjuterash.

    Kur numri i kompjuterėve rritet, kostoja e hadware-it bėhet mė e lartė se ajo e software-it, sepse software-t shumėfishohen pa kosto.

    Dhe kėtej e tutje, hadrware-t as nuk kanė pėr t’u bėrė mė tė shpejtė (sė paku jo ashtu siē ishim mėsuar).

    The Free Lunch Is Over.

    Microsoft's top developers prefer old-school coding methods

  5. #15
    i/e regjistruar Maska e hot_prinz
    Anėtarėsuar
    29-05-2007
    Vendndodhja
    Frankfurt
    Postime
    9,878
    Pershendetje Neritan,



    berthama e procesorit nuk po shpejton proporcionalisht si me heret sepse edhe teknologjia e prodhitmit te procesoreve ka kufinje, momentalisht prodhohen procesore me 45nm. Nese do te arrihet teknologji me e sakte le te themi 20nm do te dyfishohet shuma e transistoreve, aktualisht psh. i5 posedon me shume se 750 milione transistore.

    Prodhuesit e procesoreve prandaj kaluan ne procesore me me shume berthama apo multicore. Per te shfrytezuar mire procesoret multicore nevojitet dhe programimi paralel apo hyperthreading.

    Ja nje shembull ne C# i progresionit ne programim paralel josinkron, ku kater berthamat bejne llogaritjen ne te njejten kohe, procesori llogarit 4x me shume/shpejte dhe nese llogarit instruksionet ~11 miliarde instruksione ne ~1500 ms:




    Natyrisht, nuk dua te komprimitoj C++ eshte gjuhe e fuqishme multiparadigmale.

    Por le ta marrim nje shembull, ne Java kompilon nje program dhe ai version ekzekutohet ne Windows, Linux, Mac, Unix, etj. Ne C++ duhet me kompilu nje varg versionesh, per te gjithe OS-at, edhe ate ne 32bit, 64bit, 128bit, etj etj.

    Tani, sa luan rol shpejtesia e ekzekutimit per 200ms dallon nga projeki ne projekt dhe eshte relative.

    Projektet e medha - xxl ku shpejtesia eshte primare optimohen ne asembler e jo ne c++.
    Ndryshuar pėr herė tė fundit nga hot_prinz : 29-01-2011 mė 07:32

  6. #16
    Analog Brain Maska e josif
    Anėtarėsuar
    26-02-2004
    Vendndodhja
    madagaskar
    Postime
    245
    Neritan pershendetje,

    Ne rastin ne fjale nuk mund te krahasohet performanca e C++ me C#.

    Si fillim kodi C++ perpilohet ne gjuhe assembly dhe eshte i egzekutueshem direkt ne arkitekturen ku ajo perpilohet.

    Kurse C# perdor nje shtrese te ndermjetme, fillimisht kodi perpilohet ne nje gjuhe te quajtur MSIL (Microsoft Intermediate Language) e cila ne princip ngjason me bytecode e Java-s. Ne momentin kur nje program i punuar ne C# egzekutohet atehere kodi MSIL egzekutohet nga platforma e ndermjetme .Net, e cila eshte nje program i ngjashem me JVM (Java Virtual Machine).

    E dyta C# eshte nje gjuhe me e kontrrolluar ne aspektin e type safety, ka nje mekanizem te Garbage Collector (GC) qe automatikisht fshin objektet e allokuara qe sjane me ne perdorim. Ne rastin e C++ ti duhet te calokosh hapesirat e marra nga memorja heap. Vete GC eshte nje algoritem qe ka kosto ne kohe, por nuk ka probleme te aksesimit te memorjeve pasi calokohen etj. Pra ke trade-off midis sigurise dhe shpejtesise. Plus kesaj ke shume vecori tipike te C# qe mund ti lexosh ngado.

    Ky eshte diskutim i gjere, por ne praktiken e Software Engineering ne shumicen e rasteve aplikacionet ose qendrojne Idle (pa bere gje), ose presin per veprime IO (lexim te dhenash nga file, database, etj ...). Veprimet IO varen nga shpejtesia e leximit ne disk dhe interrupted qe priten deri sa data te jete lexuar kerkojne te njejten kohe me te gjitha gjuhet e perdorimit. Nga ana tjeter ne biznes kerkohen me shume aplikacione te qendrueshme, qe ndertohen shpejt e ne kosto, etj ... Prandaj njerezit jane te synuar te mesojne gjuhe ku programimi eshte me i lehte e komod si C# apo Java.

    Keshtu qe si perfundim, nese te duhet nje program i rende kalkulativ dhe koha per kete task eshte kriter kryesor, (psh drivera, simulime shkencore, programe real-time ), atehere perdor C++ ose C. Ne te gjithe rastet e tjera do te te keshilloje te perdorje ate qe je me i zoti te perdoresh e te lejon te punosh shpejt.

    Me respekte,
    He walks among us, but He is not one of us ...

  7. #17
    i/e regjistruar
    Anėtarėsuar
    16-04-2004
    Postime
    674

    Ngjatjeta

    Tungjatjeta Josif,

    gadi plotesisht pajtohem me postimin tend. Madje me heret (ne po kete teme) jam munduar edhe vet ti ceki mu keto dallime fundamentale por si duket kam perdorun ndonje gjuhe te Afrikes, sepse vazhdimisht permendej JIT perpilimi e une, si duket nuk mundesha te kjartesoj se eshte CLR (common language runtime) e cila si ndermjetesues e fute nje penalti ne aspektin e perfomances.

    Vetem nje shtesa kisha ne postimin tend. Net dhe java programet jane shum te pershtatshme per long running tasks psh per sherbime webi (webservice) qofte soap qofte json. Keto platforma e mundesojne edhe kompozimin e sherbimeve gje qe e mundeson nderrimin e perpunimit ne mase bukur te madhe me shum pak mund. Pra si "middleware" ose "application stack" jane tejet te dobishme ne programe komerciale ku llogaritjet nuk jane edhe aq intenzive.

  8. #18
    i/e regjistruar
    Anėtarėsuar
    17-11-2006
    Postime
    81
    Pėrshėndetje

    Unė desha tė krahasoja performancėn e C# kundrejt C++ nxitur nga shumė mesazhe (kryesisht nė stackoverflow.com) qė jo vetėm “dėshmonin” superioritetin e C# nė performancė, por madje edhe i argumentonin tė dhėnat e tyre eksperimentale me faktin se “ėshtė normale, C# optimizohet nė funksion tė procesorit target (host)”. Apo “C# ka njė model tė mirė-definuar tė veprimeve me numrat me presje dhjetore, ndėrsa C/C++ vuajnė faktin qė duhet tė jenė ‘backwards-compatible’”, ...
    http://stackoverflow.com/questions/686483/c-vs-c-big-performance-difference
    http://stackoverflow.com/questions/2496803/c-and-c-speed-compared
    ...etj.

    Nė mesazhin e link-ut tė parė p.sh. testi bėhej pėrkundrejt llogaritjes nė njė ‘loop’ tė sqrt().
    Fillimisht versioni C/C++ ishte nja 30 herė me i ngadaltė se versioni C#, por mbas pėrpjekjeve tė personit nė fjalė pėr ta “optimizuar” versionin C/C++ qė tė mos bėnte figurė aq tė keqe ndaj C#, pėrfundimisht versioni C/C++ “arriti” tė ishte rreth 150% mė i ngadaltė se ai C#, ēka sipas autorit tė testit “ėshtė e pranueshme”.

    Unė e bėra vetė njė test tė tillė, dhe fillimisht programi C/C++ ishte rreth 2 herė mė i ngadaltė se ai nė C#. Kjo nuk mė habiti, sepse e di qė opsioni default pėr ‘Floating Point Model’ ėshtė ‘Precise’. Kėshtu qė e ndryshova nė ‘Fast’. Kėsaj rradhe tė dy programet ekzekutoheshin njėlloj.
    Por diku kisha lexuar qė nė VS2010 (apo VS2008, nuk e mbaj mend) MS e kishte zvogėluar pak performancėn edhe nė rastin e opsionit ‘Fast’ nė funksion tė ‘consistency’.
    Kėshtu qė e kompilova me kompilatorin e Intelit, dhe pėrfundimisht versioni C/C++ u bė rreth 150% mė i shpejtė se ai C#.

    Tashmė, pohime si ato mėsipėr nuk mė habisin mė. Ajo qė kam kuptuar ėshtė se ata qė bėjnė kėto pohime nuk kanė haber as tė kompilojnė njė program, dhe ndoshta njė nga arsyet pse preferojnė C# ėshtė se nuk ofron shumė opsione, e pėr pasojė mė pak gjasa tė ngatėrrohen me kėmbėt e tyre (nė rastin e shembullit, C# nuk ofron ndonjė opsion pėr FPU, por e ka tė paravendosur ekuivalentin e C++ ‘Fast’).

    ------------------------------------

    Pėr sa i pėrket portabilitetit...

    Ka dy lloj portabilitetesh: nė raport me hardware tė ndryshėm; dhe nė raport me sisteme operimi tė ndryshėm.

    Por mė parė le tė biem dakord se portabiliteti nuk ka tė bėjė me faktin nėse programin duhet ta kompilosh pėr platforma tė ndryshme. Kompilimi ėshtė njė proces “mekanik”(d.m.th. automatik) qė kryhet nga kompilatori, pa ndonjė kosto tė perceptueshme.
    Portabiliteti ka tė bėjė me faktin nėse programin tė duhet ta (ri)shkruash pėr ē’do platformė. Kjo ka kosto.

    Nė raport me hardware-in, C/C++ janė aq portable sa mė sbėhet. Me .NET-in e Java s’kanė tė krahasuar.
    C-ja shpesh herė pėrshkruhet si “portable assembler”, dhe C++ ėshtė po aq portable sa C.

    Arsyeja pse C/C++ janė gjuhė “tė vogla”, pa suport pėr threads, UI, network, etj. ėshtė pikėrisht qė tė jenė portable. Nė C/C++ mund tė programosh praktikisht ē’do lloj hardware tė programueshėm. Motorė luftanijesh, avionė, misile, robotėt pėr nė Mars, ... etj. janė programuar nė C++.

    Natyrisht, hardware kaq tė ndryshėm kanė karakteristika unike, dhe ato pjesė tė programit qė trajtojnė kėto aspekte s’mund tė jenė portable. Por ky ėshtė njė terren ku Java e .NET nuk janė fare prezent.

    Gjithashtu ėshtė e mundur qė programet C/C++ tė jenė portable edhe nė raport me sisteme tė ndryshme operimi, duke mos programuar pėrkundrejt API tė kėtyre OS-ve, por pėrkundrejt ndonjė librarie qė ofron njė interface uniforme, siē ėshtė p.sh. Qt.

    Por problemi kur programon pėrkundrejt emėruesit tė pėrbashkėt tė sistemeve tė ndryshme operimi ėshtė se s’mund tė shfrytėzosh avantazhet unike qė ofron secili OS. Dhe kjo vlen edhe pėr Java e .NET.

    Pėr sa i pėrket Java, kjo ėshtė e vetmja alternativė (tė programosh kundrejt JVM).
    Nė rastin e C/C++ mund tė zgjedhėsh tė programosh kundrejt njė librarie si Qt, por nuk je i detyruar. Dhe nė fakt shumica nuk zgjedh kėtė alternativė.
    Ndėrsa C# ėshtė praktikisht e lidhur mbas Windows-it. E di, ekziston edhe Mono, por tė gjithė (pėrdoruesit e .NET-it) deklarojnė se ėshtė njė implementim inferior ndaj atij tė MS.

    Edhe pse njė nga avantazhet e pretenduar tė VM ėshtė portabiliteti, e vėrteta ėshtė se Java e .NET janė mė tė pėrhapur nė programimin e web-serverave dhe aplikacione biznesi.
    Qė tė dy skenarė ku portabiliteti s’ka pikė rėndėsie!
    Nė tė dy rastet numri i kompjuterave nė tė cilėt programi ka pėr t’u ekzekutuar ėshtė i vogėl dhe nėn kontrollin e njė subjekti tė vetėm.

    Pjesa dėrrmuese e programeve qė targetojnė konsumatorė individualė, qė pėrdorin njė larmi hardware/OS, dhe ku portabiliteti mund tė kishte domethėnie, faktikisht shkruhen nė C/C++.

    Pėr sa i pėrket ‘type-safety’, Ok, C-ja nuk ka shumė pretendime, por C++ ėshtė po aq ‘type-safe’ sa .NET apo Java.

    GC ėshtė vetėm njė nga mėnyrat se si memoria mund tė administrohet, dhe nuk ėshtė domosdoshmėrish mėnyra mė e mirė, sė paku jo nė tė gjitha rastet.
    Kjo ėshtė dhe arsyeja pse nė C# ekziston “using(){}”, qė imiton mėnyrėn se si administrohen resourcet nė C++ - RAII (Resource Acquisition Is Initialization).
    Gjithashtu, ekzistojnė disa implementime tė GC pėr C++, dhe nuk ėshtė e vėshtirė ta implementosh vetė.
    Nė ketė libėr shpjegohet njė variant i thjeshtė.
    Dhe si pėr ē’do gjė tjetėr, pėrdorimi i GC nė C++ ėshtė njė opsion, por nuk ėshtė i detyruar.


    Edhe njė herė mbi performancėn... (strumbullari i kėsaj teme)

    C++ ofron tė njėjtėn performancė qė ofron C. Madje, nė disa raste ėshtė e vėshtirė qė me C tė arrish performancėn e C++, por pėr faktin e thjeshtė se C++ derivon prej C, performanca e C ėshtė automatikisht e trashėguar nė C++.

    Edhe nė situatat qė kėrkojnė performancė tė lartė, programet nuk shkruhen nė asembler, me pėrjashtim tė rasteve kur dikush e shkruan nė asm thjesht dhe vetėm pėr tė demonstruar se mund ta shkruajė tė gjithin nė asm (ose kur programi ėshtė ekstremisht i vogėl, siē ėshtė p.sh. bootstrap).
    Arsyeja ėshtė e thjeshtė: programet e shkruar nė C++ mund tė link-ohen me module tė shkruar nė C, fortran apo asembler.

    Rritja e numrit tė procesorėve, bėrthamave (core) brenda njė procesori, rritja e sasisė sė memories (cache) dhe shpejtėsisė sė saj, kanė pėr tė dhėnė njėfarė kontributi nė rritjen e aftėsive procesuese, por pak a shumė kemi arritur nė limitet e kėsaj teknologjie.

    Ēdo program ka pjesė qė mund tė ekzekutohen nė paralel, dhe pjesė qė duhet tė ekzekutohen nė seri.
    Pjesėt qė mund tė ekzekutohen nė paralel mund tė ekzekutohen edhe nė seri, por pjesėt qė duhet tė ekzekutohen nė seri nuk mund tė ekzekutohen nė paralel.
    Kėshtu qė paralelizmi nuk ka pėr tė na ēuar shumė larg.

    Arsyeja pse gjithė energjitė janė fokusuar tek multicore/paralelizėm ėshtė se procesorėt kanė arritur pak a shumė limitin e shpejtėsisė.
    Shpejtėsia e ka njė limit – shpejtėsinė e dritės.

    Numri i transistorėve mund tė vazhdojė tė dyfishohet ē’do 18 muaj edhe pėr ca kohė, por kjo nuk e rrit frekuencėn, dhe gjithė ēfarė mund tė merrej nga “branch prediction”, “speculative execution” apo “pipelining” pak a shumė ėshtė shfrytėzuar.

    Shembulli i paralelizmit qė ke sjellė mė sipėr hot_prinz, demonstron tė kundėrtėn e asaj qė ke dashur tė thuash: “procesori llogarit 4x me shume/shpejte”.

    Vetėm njėri nga procesorėt ka bėrė punė.
    Tre tė tjerėt kanė harxhuar korrent kot. Ekzistenca e tyre nuk bėri qė progresioni tė llogaritej mė shpejtė.
    Dakord, progresioni u llogarit 4 herė, po kujt i hyn nė punė kjo?
    Nėse dikujt i duhen 4 kopje tė rezultateve, fare mirė mund tė kopjojė rezultatet qė llogariti procesori i parė.




    ----------------------------------------
    Ky ishte mesazhi im i fundit nė kėtė forum.

    Pėrpara nja dhjetė ditėsh, me urdhėr tė sali berishės u pushkatuan 3 qytetarė Shqiptarė, tė paarmatosur, pa precedentė penalė, pa gjyq, nė mes tė bulevardit Dėshmorėt e Kombit, nė njė hapėsirė publike ku gjithkush ka tė drejtė tė rrijė.
    Vrasėsve, saliu u dha njė rrogė shtesė dhe, ndonėse me ligj nuk u takon, imunitet ndaj hetimit.


    Nėse i vret kėlyshin njė qėni apo maceje, mund tė angullijnė pėr disa orė, e nė ndonjė rast mund tė refuzojnė edhe ushqimin pėr njė, a mbase dy ditė. Por vetėm kaq. Janė kafshė dhe jetojnė vetėm nė tė tashmen. Sapo e tashmja bėhet e shkuar, asnjė gjurmė s’ngelet mė tek ta.

    Por njė gjė tė tillė s’mund ta bėsh me njerėzit. Njerėzit nuk falin.
    Njerėzit, dhe jo ata qė quhen njerėz thjesht dhe vetėm sepse qėndrojnė mbi dy kėmbė (e qė fare mirė mund tė quheshin pula).

    Njerėzit jetojnė edhe nė tė shkuarėn, pėrmes kujtimeve, edhe nė tė ardhmen, pėrmes imagjinatės.
    Dhe sa mė inteligjent tė jenė, aq mė thellė nė tė shkuarėn, dhe aq mė larg nė tė ardhmen shkon mendja e tyre.


    Unė s’mund tė jem mė pjesė e kėtij forumi qė ose censurohet (siē ankohej dikush), ose nė pjesėn dėrrmuese popullohet nga llumi i shoqėrisė Shqiptare. Cilido rast qoftė.

    Nė vijim kam pėr tė postuar nė ndonjė nga forumet e tjera Shqiptare, me kėtė emėr, e ndoshta mund tė blogoj edhe nė sitin tim.

  9. #19
    i/e regjistruar Maska e hot_prinz
    Anėtarėsuar
    29-05-2007
    Vendndodhja
    Frankfurt
    Postime
    9,878
    Citim Postuar mė parė nga Neritan Hyso Lexo Postimin
    Pėrshėndetje

    Shembulli i paralelizmit qė ke sjellė mė sipėr hot_prinz, demonstron tė kundėrtėn e asaj qė ke dashur tė thuash: “procesori llogarit 4x me shume/shpejte”.

    Vetėm njėri nga procesorėt ka bėrė punė.
    Tre tė tjerėt kanė harxhuar korrent kot. Ekzistenca e tyre nuk bėri qė progresioni tė llogaritej mė shpejtė.
    Dakord, progresioni u llogarit 4 herė, po kujt i hyn nė punė kjo?
    Nėse dikujt i duhen 4 kopje tė rezultateve, fare mirė mund tė kopjojė rezultatet qė llogariti procesori i parė.

    .
    Pershendetje Neritan,

    pse ore deshiron te largohesh?
    Na trego faqet ku shkruan te lexojme nganjehere, se do te mallengjehemi, per keto shkrime dhe per pasionin prej programuesi.

    Sa i perket rastit qe kam sjelle, pse ore thua qe nuk llogarit per te njejten kohe 4x me shume/me shpejte?
    Ja nje screenshot gjate ekzekutimit ku te kater berthamat mund te verehen qe perdoren deri ne maksimum, dhe perderisa llogaritin rezultatin e njejte normal qe llogaritin 4x me shume ne te njejten kohe.



    Pse llogarita regresionin 4x, ishte sepse regresioni i ndare ne kater pjese ne secilin task fillon nga numri 1, dhe shuma e progresionit nuk mbetet e njejte sepse varet nga progresioni ne nje seri te loop-it, progresioni i loopit mund te llogaritet njehere per pjesen e pare e tasqet tjera te startojne me progresion dhe ndryshore te loop-it te llogaritur, por prapeseprape ja nje rast kur i gjithe loop-i u dhurohet 4 berthamava me [int x = 0x1FFFFFFF / 4;] dhe llogarisin per 400 ms me progresion fillestar:



    Dhe kodi:
    Kodi:
    using System;
    using System.Threading.Tasks;
    
    namespace csharp1
    {
        class Program
        {
            static void Main(string[] args)
            {
                int x = 0x1FFFFFFF;
    
                System.Diagnostics.Stopwatch timer = new System.Diagnostics.Stopwatch();
    
                timer.Restart();
    
                Task task1 = Task.Factory.StartNew(() => llogarit(x, 1));
                Task task2 = Task.Factory.StartNew(() => llogarit(x, 2));
                Task task3 = Task.Factory.StartNew(() => llogarit(x, 3));
                Task task4 = Task.Factory.StartNew(() => llogarit(x, 4));
    
                task1.Wait();task2.Wait();task3.Wait();task4.Wait();
    
                timer.Stop();
    
                System.Console.Write("\n\nkoha gjithsejt: {0}", timer.ElapsedMilliseconds);
                System.Console.ReadKey();
            }
    
            public static unsafe void llogarit(int x, int j)
            {
                const int buffsize = 10;
                Int64 progresion = 0;
                Int64[] buffer = new Int64[buffsize];
                System.Diagnostics.Stopwatch timer = new System.Diagnostics.Stopwatch();
    
                timer.Restart();
    
                fixed (Int64* pBuffer = buffer)
                {
                    for (int i = 0; i <= x; i++)
                    {
                        *(pBuffer + i % buffsize) += progresion += i;
                    }
                }
    
                timer.Stop();
    
                System.Console.Write("task: {0}\nprogresion: {1}\nkoha: {2}\n\n", j, progresion, timer.ElapsedMilliseconds);
                for (int i = 0; i < buffsize; i++)
                    System.Console.Write("{0}{1:x16} ", i % 4 != 0 ? "" : "\n", buffer[i]);
                System.Console.Write("\n\n");
            }
        }
    }

    Sa i perket Assembler. C gjate kompilimit ofron mundesine e eksportimit te codit ne assembler per optimim te metutjeshem, vete compileret e gjuheve te larta optimohen ne assembler. Assembler si gjuhe e ulte eshte me prane hardware-ve se c/c++. Per llogaritje te larta, BLAS [Basic Linear Algebra Subprograms] eshte optimuar ne Assembler.
    Ndryshuar pėr herė tė fundit nga hot_prinz : 03-02-2011 mė 13:34

  10. #20
    Analog Brain Maska e josif
    Anėtarėsuar
    26-02-2004
    Vendndodhja
    madagaskar
    Postime
    245
    Pershendetje Neritan,

    Kryesisht bie dakort me postimin tend ne vija te pergjithshme. C/C++ eshte me i shpejte se C# ne rast te pergjithshem e ketu e kemi permendur te pakten tre vete kete fakt.

    Por me beri pershtypje nje mendimi yt ne lidhje me portabilitetin e C++ e krahasuar me .Net, ku ti pretendon se C++ eshte me portable ne aspektin e hardware.

    Ky argument mua me duket paksa jo praktik ose te them me duket nje kendveshtrim tendencioz. Per mendimin tim nese nje platforme supporton JVM atehere suportohet automatikisht nje pjese e madhe e hardware-ve si rrjedhoje e utiliteteve qe ofron sistemi operativ.

    Ja pershembull rasti i hardwareve bazike te nje sistemi operativ, te themi nje shembull: hard diskeve. A ka rendesi se cfare lloji eshte hard disku nese ti shkruan nje file dhe sistemi operativ i ka driverat e duhur per ta lexuar diskun? Nuk ka kurfare rendesie pasi tashme eshte kryesisht pergjegjesi e sistemeve operative te sigroje layerin. I njejti diskurs ne rastin e procesoreve. Krijimi i nje procesi varet nga utilitetet e sistemit te operimit dhe nuk eshte vecori e gjuhes se programimit. E njejta teme me karten grafike, te zerit, etj ...

    Ne rastin tjeter kur nje device, te themi atipike, ka nje driver, ne shumicen e rasteve librari asembli, atehere komunikimi me pajisjen mund te aksesohet nepermjet librarive te driverit qofte nga C# (DllImport) ose Java (Java Native Library / jna ).

    Per te shtuar ne raste ekstreme ku te themi ke nje device te vecante qe nuk ka driver por ka nje dokumentacion mbi kodimin e bytestream-eve dhe protocolin e komunikimit, atehere edhe kjo fare mire mund te behet ne C# apo Java nepermjet nje byte stream me porten ku eshte lidhur pajisja.

    Pra nese .Net ose JVM suportohet nga nje platforme e caktuar, atehere automatikisht C# ose Java ka perdorim dhe portabilitet te njejte me C++, biles akoma me te lehte pasi nuk nevojitet rikompilimi. Ne rastin e .Net kemi probleme me shume sisteme operimi *nix, por JVM eshte portable thuajse ne nje range te plote te platformave. Sigurisht ka edhe platforma me pak te perdorura ku JVM mungon, dhe ne ato raste C++ eshte e vetmja zgjidhje.

    Ti ke bere nje gabim kur ke thene rikompilimi i kodit C++ ne nje platforme tjeter eshte proces i kollajte. Ne rastet kur ti perdor nje librari me pagese, (per shembull nje third-party dll library), atehere duhet qe edhe ato te rikompilohen ne platformen e re. Po sikur te mos e kesh source code-in e librarive third-party? Ne projekte te medha ky eshte nje problem shume serioz pasi jo gjithmone te mundesohet kodi i librarive me pagese. Ose me tej ta zeme qe munde ta gjesh souce code-in e librarive third-party. Po sikur libraria third-party, te perdori nje library tjeter third-party nga ana e saj?

    Prandaj portabiliteti ne C++ eshte ndofta teorikisht me i potencial sesa Java apo C# pasi nuk ke nevoje qe .Net/JVM te jene gati per ate platforme ku punon, por ne praktike ato te thjeshtojne shume punen nese jane te suportuara.

    Si perfundim do te thoja qe nuk ka gjuhe me te mire se tjetra, rendesi ka trade-off. Ne te duhet shpejtesi dhe performance ate e realizon me C++, por kerkon me shume efforts/budget ne development. Nese te duhet me shume features gati dhe me pak kosto perdor Java apo .Net.

    Nese nje program ne C++ punon 2 sekonda me shpejt po kushton 20.000 dollare me shume pasi duhet te besh ndonjehere qofte edhe librari string vete, pasi nuk i ke te gatshme, nga ana tjeter ne C#/Java mund te perdoresh shume librari te gatshme qe te shkurtojne koston e software. Plus asaj programuesat e C++ kerkojne me shume rroge se ata te Java, etj, pra duhen pare gjerat edhe nga aspekti ekonomik. Keshtu qe une parashikoj qe ana ekonomike do te detyroje perdorim te platformave .Net/JVM ne te ardhmen, qe te ofrojne shume funksione dhe funksionalitete te gatshme dhe te nxjerrin ne treg me kosto te ulet.

    Kurse ne rast se development e shikon si art e jo biznes, nese merresh me research, aplikacione qe duan performance brilante, etj, ... me mire perdor C++.

    Shpresoj te jem sqaruar.
    Citim Postuar mė parė nga Neritan Hyso Lexo Postimin
    Pėrshėndetje

    Unė desha tė krahasoja performancėn e C# kundrejt C++ nxitur nga shumė mesazhe (kryesisht nė stackoverflow.com) qė jo vetėm “dėshmonin” superioritetin e C# nė performancė, por madje edhe i argumentonin tė dhėnat e tyre eksperimentale me faktin se “ėshtė normale, C# optimizohet nė funksion tė procesorit target (host)”. Apo “C# ka njė model tė mirė-definuar tė veprimeve me numrat me presje dhjetore, ndėrsa C/C++ vuajnė faktin qė duhet tė jenė ‘backwards-compatible’”, ...
    http://stackoverflow.com/questions/686483/c-vs-c-big-performance-difference
    http://stackoverflow.com/questions/2496803/c-and-c-speed-compared
    ...etj.

    Nė mesazhin e link-ut tė parė p.sh. testi bėhej pėrkundrejt llogaritjes nė njė ‘loop’ tė sqrt().
    Fillimisht versioni C/C++ ishte nja 30 herė me i ngadaltė se versioni C#, por mbas pėrpjekjeve tė personit nė fjalė pėr ta “optimizuar” versionin C/C++ qė tė mos bėnte figurė aq tė keqe ndaj C#, pėrfundimisht versioni C/C++ “arriti” tė ishte rreth 150% mė i ngadaltė se ai C#, ēka sipas autorit tė testit “ėshtė e pranueshme”.

    Unė e bėra vetė njė test tė tillė, dhe fillimisht programi C/C++ ishte rreth 2 herė mė i ngadaltė se ai nė C#. Kjo nuk mė habiti, sepse e di qė opsioni default pėr ‘Floating Point Model’ ėshtė ‘Precise’. Kėshtu qė e ndryshova nė ‘Fast’. Kėsaj rradhe tė dy programet ekzekutoheshin njėlloj.
    Por diku kisha lexuar qė nė VS2010 (apo VS2008, nuk e mbaj mend) MS e kishte zvogėluar pak performancėn edhe nė rastin e opsionit ‘Fast’ nė funksion tė ‘consistency’.
    Kėshtu qė e kompilova me kompilatorin e Intelit, dhe pėrfundimisht versioni C/C++ u bė rreth 150% mė i shpejtė se ai C#.

    Tashmė, pohime si ato mėsipėr nuk mė habisin mė. Ajo qė kam kuptuar ėshtė se ata qė bėjnė kėto pohime nuk kanė haber as tė kompilojnė njė program, dhe ndoshta njė nga arsyet pse preferojnė C# ėshtė se nuk ofron shumė opsione, e pėr pasojė mė pak gjasa tė ngatėrrohen me kėmbėt e tyre (nė rastin e shembullit, C# nuk ofron ndonjė opsion pėr FPU, por e ka tė paravendosur ekuivalentin e C++ ‘Fast’).

    ------------------------------------

    Pėr sa i pėrket portabilitetit...

    Ka dy lloj portabilitetesh: nė raport me hardware tė ndryshėm; dhe nė raport me sisteme operimi tė ndryshėm.

    Por mė parė le tė biem dakord se portabiliteti nuk ka tė bėjė me faktin nėse programin duhet ta kompilosh pėr platforma tė ndryshme. Kompilimi ėshtė njė proces “mekanik”(d.m.th. automatik) qė kryhet nga kompilatori, pa ndonjė kosto tė perceptueshme.
    Portabiliteti ka tė bėjė me faktin nėse programin tė duhet ta (ri)shkruash pėr ē’do platformė. Kjo ka kosto.

    Nė raport me hardware-in, C/C++ janė aq portable sa mė sbėhet. Me .NET-in e Java s’kanė tė krahasuar.
    C-ja shpesh herė pėrshkruhet si “portable assembler”, dhe C++ ėshtė po aq portable sa C.

    Arsyeja pse C/C++ janė gjuhė “tė vogla”, pa suport pėr threads, UI, network, etj. ėshtė pikėrisht qė tė jenė portable. Nė C/C++ mund tė programosh praktikisht ē’do lloj hardware tė programueshėm. Motorė luftanijesh, avionė, misile, robotėt pėr nė Mars, ... etj. janė programuar nė C++.

    Natyrisht, hardware kaq tė ndryshėm kanė karakteristika unike, dhe ato pjesė tė programit qė trajtojnė kėto aspekte s’mund tė jenė portable. Por ky ėshtė njė terren ku Java e .NET nuk janė fare prezent.

    Gjithashtu ėshtė e mundur qė programet C/C++ tė jenė portable edhe nė raport me sisteme tė ndryshme operimi, duke mos programuar pėrkundrejt API tė kėtyre OS-ve, por pėrkundrejt ndonjė librarie qė ofron njė interface uniforme, siē ėshtė p.sh. Qt.

    Por problemi kur programon pėrkundrejt emėruesit tė pėrbashkėt tė sistemeve tė ndryshme operimi ėshtė se s’mund tė shfrytėzosh avantazhet unike qė ofron secili OS. Dhe kjo vlen edhe pėr Java e .NET.

    Pėr sa i pėrket Java, kjo ėshtė e vetmja alternativė (tė programosh kundrejt JVM).
    Nė rastin e C/C++ mund tė zgjedhėsh tė programosh kundrejt njė librarie si Qt, por nuk je i detyruar. Dhe nė fakt shumica nuk zgjedh kėtė alternativė.
    Ndėrsa C# ėshtė praktikisht e lidhur mbas Windows-it. E di, ekziston edhe Mono, por tė gjithė (pėrdoruesit e .NET-it) deklarojnė se ėshtė njė implementim inferior ndaj atij tė MS.

    Edhe pse njė nga avantazhet e pretenduar tė VM ėshtė portabiliteti, e vėrteta ėshtė se Java e .NET janė mė tė pėrhapur nė programimin e web-serverave dhe aplikacione biznesi.
    Qė tė dy skenarė ku portabiliteti s’ka pikė rėndėsie!
    Nė tė dy rastet numri i kompjuterave nė tė cilėt programi ka pėr t’u ekzekutuar ėshtė i vogėl dhe nėn kontrollin e njė subjekti tė vetėm.

    Pjesa dėrrmuese e programeve qė targetojnė konsumatorė individualė, qė pėrdorin njė larmi hardware/OS, dhe ku portabiliteti mund tė kishte domethėnie, faktikisht shkruhen nė C/C++.

    Pėr sa i pėrket ‘type-safety’, Ok, C-ja nuk ka shumė pretendime, por C++ ėshtė po aq ‘type-safe’ sa .NET apo Java.

    GC ėshtė vetėm njė nga mėnyrat se si memoria mund tė administrohet, dhe nuk ėshtė domosdoshmėrish mėnyra mė e mirė, sė paku jo nė tė gjitha rastet.
    Kjo ėshtė dhe arsyeja pse nė C# ekziston “using(){}”, qė imiton mėnyrėn se si administrohen resourcet nė C++ - RAII (Resource Acquisition Is Initialization).
    Gjithashtu, ekzistojnė disa implementime tė GC pėr C++, dhe nuk ėshtė e vėshtirė ta implementosh vetė.
    Nė ketė libėr shpjegohet njė variant i thjeshtė.
    Dhe si pėr ē’do gjė tjetėr, pėrdorimi i GC nė C++ ėshtė njė opsion, por nuk ėshtė i detyruar.


    Edhe njė herė mbi performancėn... (strumbullari i kėsaj teme)

    C++ ofron tė njėjtėn performancė qė ofron C. Madje, nė disa raste ėshtė e vėshtirė qė me C tė arrish performancėn e C++, por pėr faktin e thjeshtė se C++ derivon prej C, performanca e C ėshtė automatikisht e trashėguar nė C++.

    Edhe nė situatat qė kėrkojnė performancė tė lartė, programet nuk shkruhen nė asembler, me pėrjashtim tė rasteve kur dikush e shkruan nė asm thjesht dhe vetėm pėr tė demonstruar se mund ta shkruajė tė gjithin nė asm (ose kur programi ėshtė ekstremisht i vogėl, siē ėshtė p.sh. bootstrap).
    Arsyeja ėshtė e thjeshtė: programet e shkruar nė C++ mund tė link-ohen me module tė shkruar nė C, fortran apo asembler.

    Rritja e numrit tė procesorėve, bėrthamave (core) brenda njė procesori, rritja e sasisė sė memories (cache) dhe shpejtėsisė sė saj, kanė pėr tė dhėnė njėfarė kontributi nė rritjen e aftėsive procesuese, por pak a shumė kemi arritur nė limitet e kėsaj teknologjie.

    Ēdo program ka pjesė qė mund tė ekzekutohen nė paralel, dhe pjesė qė duhet tė ekzekutohen nė seri.
    Pjesėt qė mund tė ekzekutohen nė paralel mund tė ekzekutohen edhe nė seri, por pjesėt qė duhet tė ekzekutohen nė seri nuk mund tė ekzekutohen nė paralel.
    Kėshtu qė paralelizmi nuk ka pėr tė na ēuar shumė larg.

    Arsyeja pse gjithė energjitė janė fokusuar tek multicore/paralelizėm ėshtė se procesorėt kanė arritur pak a shumė limitin e shpejtėsisė.
    Shpejtėsia e ka njė limit – shpejtėsinė e dritės.

    Numri i transistorėve mund tė vazhdojė tė dyfishohet ē’do 18 muaj edhe pėr ca kohė, por kjo nuk e rrit frekuencėn, dhe gjithė ēfarė mund tė merrej nga “branch prediction”, “speculative execution” apo “pipelining” pak a shumė ėshtė shfrytėzuar.

    Shembulli i paralelizmit qė ke sjellė mė sipėr hot_prinz, demonstron tė kundėrtėn e asaj qė ke dashur tė thuash: “procesori llogarit 4x me shume/shpejte”.

    Vetėm njėri nga procesorėt ka bėrė punė.
    Tre tė tjerėt kanė harxhuar korrent kot. Ekzistenca e tyre nuk bėri qė progresioni tė llogaritej mė shpejtė.
    Dakord, progresioni u llogarit 4 herė, po kujt i hyn nė punė kjo?
    Nėse dikujt i duhen 4 kopje tė rezultateve, fare mirė mund tė kopjojė rezultatet qė llogariti procesori i parė.




    ----------------------------------------
    Ky ishte mesazhi im i fundit nė kėtė forum.

    Pėrpara nja dhjetė ditėsh, me urdhėr tė sali berishės u pushkatuan 3 qytetarė Shqiptarė, tė paarmatosur, pa precedentė penalė, pa gjyq, nė mes tė bulevardit Dėshmorėt e Kombit, nė njė hapėsirė publike ku gjithkush ka tė drejtė tė rrijė.
    Vrasėsve, saliu u dha njė rrogė shtesė dhe, ndonėse me ligj nuk u takon, imunitet ndaj hetimit.


    Nėse i vret kėlyshin njė qėni apo maceje, mund tė angullijnė pėr disa orė, e nė ndonjė rast mund tė refuzojnė edhe ushqimin pėr njė, a mbase dy ditė. Por vetėm kaq. Janė kafshė dhe jetojnė vetėm nė tė tashmen. Sapo e tashmja bėhet e shkuar, asnjė gjurmė s’ngelet mė tek ta.

    Por njė gjė tė tillė s’mund ta bėsh me njerėzit. Njerėzit nuk falin.
    Njerėzit, dhe jo ata qė quhen njerėz thjesht dhe vetėm sepse qėndrojnė mbi dy kėmbė (e qė fare mirė mund tė quheshin pula).

    Njerėzit jetojnė edhe nė tė shkuarėn, pėrmes kujtimeve, edhe nė tė ardhmen, pėrmes imagjinatės.
    Dhe sa mė inteligjent tė jenė, aq mė thellė nė tė shkuarėn, dhe aq mė larg nė tė ardhmen shkon mendja e tyre.


    Unė s’mund tė jem mė pjesė e kėtij forumi qė ose censurohet (siē ankohej dikush), ose nė pjesėn dėrrmuese popullohet nga llumi i shoqėrisė Shqiptare. Cilido rast qoftė.

    Nė vijim kam pėr tė postuar nė ndonjė nga forumet e tjera Shqiptare, me kėtė emėr, e ndoshta mund tė blogoj edhe nė sitin tim.
    He walks among us, but He is not one of us ...

Faqja 2 prej 2 FillimFillim 12

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.
  •