eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › Szukam benchmarków
Ilość wypowiedzi w tym wątku: 58

  • 1. Data: 2014-07-16 09:36:10
    Temat: Szukam benchmarków
    Od: Borneq <b...@a...hidden.pl>

    Do najpopularniejszych języków, zwłaszcza Javy i C#.
    Mogą być zarówno te symulujące typowe programy, jak i szczególnie te,
    które badają poszczególne typy zadań intensywnie je wykorzystując.
    Sam wczoraj na przykład napisałem procedury do badania wielokrotnego
    wywoływania najprostszej funkcji typu "return x++" i co się okazało?
    dla tego typu zadania Java okazała się bez porównania szybsza. Chciałbym
    porównać to z innymi zadaniami, może gdzieś C# będzie szybszy
    (podejrzewam że przy alokacji pamięci na nowe obiekty)


  • 2. Data: 2014-07-16 10:10:15
    Temat: Re: Szukam benchmarków
    Od: A.L. <a...@a...com>

    On Wed, 16 Jul 2014 09:36:10 +0200, Borneq <b...@a...hidden.pl>
    wrote:

    >Do najpopularniejszych języków, zwłaszcza Javy i C#.
    >Mogą być zarówno te symulujące typowe programy, jak i szczególnie te,
    >które badają poszczególne typy zadań intensywnie je wykorzystując.
    >Sam wczoraj na przykład napisałem procedury do badania wielokrotnego
    >wywoływania najprostszej funkcji typu "return x++" i co się okazało?
    >dla tego typu zadania Java okazała się bez porównania szybsza. Chciałbym
    >porównać to z innymi zadaniami, może gdzieś C# będzie szybszy
    >(podejrzewam że przy alokacji pamięci na nowe obiekty)

    Mateusz Loskot napisale na tej grupie:

    Witam,

    Podrzucam ciekawy papier porównujący kilka języków
    C++11, Fortran 2008, Java, Julia, Python, Matlab, Mathematica, R
    na bazie przebiegu implementacji tego samego modelu wzrostu

    http://economics.sas.upenn.edu/~jesusfv/comparison_l
    anguages.pdf

    A.L.


  • 3. Data: 2014-07-16 12:00:21
    Temat: Re: Szukam benchmarków
    Od: Borneq <b...@a...hidden.pl>

    W dniu 2014-07-16 10:10, A.L. pisze:
    > Podrzucam ciekawy papier porównujący kilka języków
    > C++11, Fortran 2008, Java, Julia, Python, Matlab, Mathematica, R
    > na bazie przebiegu implementacji tego samego modelu wzrostu
    >
    > http://economics.sas.upenn.edu/~jesusfv/comparison_l
    anguages.pdf

    Czyli najwolniejsze są języki związane ze środowiskami matematycznymi jak R.


  • 4. Data: 2014-07-16 23:36:03
    Temat: Re: Szukam benchmarków
    Od: firr <p...@g...com>

    W dniu środa, 16 lipca 2014 09:36:10 UTC+2 użytkownik Borneq napisał:
    > Do najpopularniejszych języków, zwłaszcza Javy i C#.
    >
    > Mogą być zarówno te symulujące typowe programy, jak i szczególnie te,
    >
    > które badają poszczególne typy zadań intensywnie je wykorzystując.
    >
    > Sam wczoraj na przykład napisałem procedury do badania wielokrotnego
    >
    > wywoływania najprostszej funkcji typu "return x++" i co się okazało?
    >
    > dla tego typu zadania Java okazała się bez porównania szybsza. Chciałbym
    >
    > porównać to z innymi zadaniami, może gdzieś C# będzie szybszy
    >
    > (podejrzewam że przy alokacji pamięci na nowe obiekty)

    dosyc chyba ciekawe teksty nt wydajnosci c#
    itd sa np na tym blogu http://code4k.blogspot.com/
    nie sa to benchmarki porórwnujace jave z c# ale jest troche ciekawych twierdzeń, nie
    czytalem tego wszystkiego ale przegladalem i jest tu troche ciekawych rzeczy


  • 5. Data: 2014-07-17 12:00:36
    Temat: Re: Szukam benchmarków
    Od: firr <p...@g...com>

    co do samego tematu wydajnosci (java vs c vs c#)
    to to co jest mi wiadome, krotko

    1. jak kiedys robilem test java wygenerowala
    kod tak samo szybki jak c (zaskoczylo mnie to ale
    w sumie jest to zrozumiale i wynika z dwu powodow
    - jawa kompiluje kod
    - kluczowy kod byl wlasciwie kodem w c (co do literki) osadzonym w javie,

    z c# pewnie jest tak samo, o tyle java i c#
    sa to po prostu nadbudowy c tak samo jak c++,
    kiedys o ile nie bylo kompilacji mozna bylo mowic
    o pewnych roznicach teraz sa to poprostu kompilatory c z javowska i c#owska nadbudową

    1. o ila ta nadbudowa jest wyciagnieta poza glowne petle (gdzie program spedza 99%
    czasu)
    to nie musi miec takiego znaczenia
    dla szybkosci programu - moga za tu byc spowolnienia na startup programu i na wiekszy
    memory stamp itp (ale ciezko mi tu podac dokladniejsze info bez praktyki w tych
    jezykach)

    1. rozne info pojawiaja sie na temat tego czy kompilacja JIT jest szybsza czy
    wolniejsza niz
    statyczna kompilacja
    - jedni mowia ze jest szybasza poniewaz sprofilowanie generowanego kodu pod dany
    procesor moze go zoptymalizowac (choc nie wiem
    jaka to moze byc skala przyspieszenia, czy jest to np łatwe 10% łatwe 15% czy moze
    czasem jest to wiecej)
    - drudzy mowia ze jit jest slabszy niz statyczna kompilacja bo nie ma tyle czasu na
    wygenerowanie kodu

    szczerze mowiac w klasycznym duchu optymalizacji
    wypadaloby traktowac JIT powaznie i doceniac ta
    optymalizacje - to faktycznie ma szanse dzialac
    nieco szybciej - z tym ze to zalezy tak naprawde jak beda budowane procesory, jesli
    ktos produkowalby procesory z wyjatkowo dużym 'rozrzutem' to jit bylby potrzebny
    jesli nie
    to nie

    1.[ NAJWAZNIEJSZE mz], potencjal do optymalizacji
    tak naprawde jesli ktos chce optymalizowac kody
    dzis to ztcw jednak musi robic wstawki w asmie
    (ze wzgledu na sse) to potencjalnie mogloby sie
    zmienic bo chyba nie ma problemu z mozliwoscią
    zapisania jakiegos tam krzepkiego wertykalnego kodu w postaci kodu w c (nie byloby
    dostepu wtedy do wszystkich operatorow sse ale wtedy mozna ratowac sie intrisincami)
    - ale poki co na razie tak nie jest tak zejesli ktos chce przyoptymalizowac to chyba
    musi to robic w asmie
    - nie wiem jak to jest ze wstawkami w asmie w
    javie i c# (?) zzasadniczo da sie to ztcso zrobic
    ale nie wiem jak to jest na dziś, podobnie przydalyby sie srodki do zarzadzania
    rozkladem encji w pamieci, wyrownania itp -- ogolenie ten
    proces jednak to byloby cos w rodzaju u-c'owienia
    czy tez u-c++owienia javy i c# tj coraz wyrazniejszego pokazywania ze w srodku ich
    siedzi
    c i taka java zaczynalaby sie wysokopoziomowo na
    poczatku a konczyla totalnie niskopoziomowo w srodku


  • 6. Data: 2014-07-17 15:00:10
    Temat: Re: Szukam benchmarków
    Od: firr <p...@g...com>

    W sumie jeszcze moge dodac , z moich ostatnich
    doswiadczen z optymalizowaniem kodu pod gcc
    mozna wyroznic nastepujace etapy

    0. nalezy napisac jako tako szybki 'bazowy' kod w c (chodzi o to by nie bylo tam
    zadych dziwact tylko strightforward + wypadaloby jakis dobry algorytm choc sporo
    przypadkow to nie sa jakies specjalne algorytmy tylko kawa na lawe-kod), ale to jest
    punkt wyjscia, bazowy kod w c 'strightforward'
    1. nalezy poeksperymentowac z flagami kompilatora
    - niektore potrafily sporo dac (nie pamietam dokladnie jakie i ile bo nie mialem z
    tym poki co az tyle praktyki, ale na pewno unsafe math rowniez chyba jeszcze cos mi
    dalo jakis speedup)
    2. nalezy zinlineowac kod (inlinowanie potrafilo tez oip dawac speedup, i nalezy tez
    uproscic na maksa petle i sprawdzac rozne warianty profilerem
    - ten punkt to jest sporo roboty bo mozliwosci i sztuczek jest sporo [nie do konca
    nawet sprawdzilem co tu mozna robic bo mozna tu robic rozne rzeczy na pewno nalezy
    kod masakrycznie uproscic wyciagac wyrazenie przed petle itp,
    mozna tez rozwijac petle na procesowanie dwu
    elementow na raz itp, moze zmienic rozklad danych w pamieci, integrowac sekwencje dwu

    blokow w jeden ale sprytniejszy itd itd
    3. najprawdopodobniej nalezy przepisac kod na intrinsiki w sse, jest to tez troche
    roboty, sprawdzic jak to wyszlo i dalej nalezy pisac i profilowac w recznym asmie i
    optymalizowac "w stylu abrasha"


    w programowaniu w jawie i c# (moze i innych jezykach) jest w zasadzie to samo tylko
    sa dwie roznice
    -1. nalezy sie upewniec ze ten kompilowany jitem kod bedzie czystym c bez tych
    wtretow spowolnien javy (na ktore dokladnie nie wiem co sie sklada ale ktos
    wspominal: "automatic memory management, arrays bounds checking and resource
    tracking")
    -2. niekotre mozliwosci bede pewnie utrudnione w javie/c# nie wiem jak tam jest w
    tych jezykach z
    zapodawniaem flag kompilacji jak unsafe math albo jak jest ze wstawkami w asmie -
    pewnie mozna
    mw tak samo latwo jak w c odpalic punkty 1. i 2.
    i z nieco wiekszymi pewnie problememi punkt 3.

    w moich ostatnich optymalizacjach (dot rasteryzera tie57) punkty 1. 2. przyniosly
    okolo 2X przyspieszenia (kosztem ponad tygodnia
    siedzenia nad petla), punktu 3. ciagle nie zrobilem z powodu zmeczenia i tymczasowego
    braku
    wprawy ale da sie zrobic, nie oczekuje jednak wielkiego przyspieszenia, Calosciowe
    efekty tej ciezkiej roboty to okolo 2X szybciej niz w wersji 'strightforward' - jesli
    ktos lubi sie pomeczyc tydzoen lub nawet wiecej by cos dzialalo jedynie lub aż 2 razy
    szybciej to warto a jesli nei to moze zostac przy wyjsciowym zwyklym kodzie
    (ja akurat lubie optymalizowac nie tylko ze wzgledu na 2X szybsze dzialanie (choc mz
    2X to
    jest cos co sie liczy) ale tez ze wzgledu na to ze podrodze osiaga sie lepsze
    zrozumienie
    kodu jak i nawet dziedziny nad ktora sie z
    tym kodem siedzi) - moze ew wraz z doswiadczeniem nabede jeszcze inną wizje tego jak
    nalezy do tego podchodzić - wrealnych grach czy innych produkcjach drugim obszarem
    optymalizaci jest optymalizacja na gpu ktora jest podobno bardziej zlozona i
    trudniejsza (mnie w sumie tak przeraza ze nawet nie che sie za to brac)


  • 7. Data: 2014-07-18 08:08:03
    Temat: Re: Szukam benchmarków
    Od: Borneq <b...@a...hidden.pl>

    W dniu 2014-07-17 12:00, firr pisze:
    > 1.[ NAJWAZNIEJSZE mz], potencjal do optymalizacji
    > tak naprawde jesli ktos chce optymalizowac kody
    > dzis to ztcw jednak musi robic wstawki w asmie
    > (ze wzgledu na sse) to potencjalnie mogloby sie

    Jestem przeciwko wstawkom, są nieprzenośne. Był kod kompilowany na 32
    bity, po przeniesieniu na 64 wszystko się przeniosło ale nie wstawki.
    Albo w Pascalu zmiana z AnsiStringa na UnicodeStringa, z grubsza
    wystarczyło zmienić deklaracje,ale nie wstawek.
    Nie powinno być w ogóle możliwości, inna rzecz, że język powinien
    umożliwić wszystko co chcemy załatwić wstawką. Na przykład w asmie jest
    fajna instrukcja ROR do haszy a w języku tego nie ma.Albo wołanie super
    dokładnego pomiaru czasu rdtsc (choć w procesorach wielordzeniowych
    zostało źle to rozwiązane i zamiast wspólnego licznika każdy rdzeń ma
    wiele liczników i gdy aplikacja działa na kilku rdzeniach raz odczyt
    może być z jednego a raz z innego)


  • 8. Data: 2014-07-18 09:56:01
    Temat: Re: Szukam benchmarków
    Od: A.L. <a...@a...com>

    On Fri, 18 Jul 2014 08:08:03 +0200, Borneq <b...@a...hidden.pl>
    wrote:

    >W dniu 2014-07-17 12:00, firr pisze:
    >> 1.[ NAJWAZNIEJSZE mz], potencjal do optymalizacji
    >> tak naprawde jesli ktos chce optymalizowac kody
    >> dzis to ztcw jednak musi robic wstawki w asmie
    >> (ze wzgledu na sse) to potencjalnie mogloby sie

    Dyc to idiotyzm

    A.L.


  • 9. Data: 2014-07-18 10:10:57
    Temat: Re: Szukam benchmarków
    Od: firr <p...@g...com>

    W dniu piątek, 18 lipca 2014 09:56:01 UTC+2 użytkownik A. L. napisał:
    > On Fri, 18 Jul 2014 08:08:03 +0200, Borneq <b...@a...hidden.pl>
    >
    > wrote:
    >
    >
    >
    > >W dniu 2014-07-17 12:00, firr pisze:
    >
    > >> 1.[ NAJWAZNIEJSZE mz], potencjal do optymalizacji
    >
    > >> tak naprawde jesli ktos chce optymalizowac kody
    >
    > >> dzis to ztcw jednak musi robic wstawki w asmie
    >
    > >> (ze wzgledu na sse) to potencjalnie mogloby sie
    >
    >
    >
    > Dyc to idiotyzm
    >
    >
    >
    > A.L.

    dlaczego?


  • 10. Data: 2014-07-18 10:20:32
    Temat: Re: Szukam benchmarków
    Od: Borneq <b...@a...hidden.pl>

    W dniu 2014-07-18 10:10, firr pisze:
    >> Dyc to idiotyzm
    >>
    >>
    >>
    >> A.L.
    >
    > dlaczego?

    Wstawki assemblerowe, to jak nadużywanie instrukcji goto. Jedyny
    przypadek gdzie w C/C++ można by użyć goto to wyjście z zagnieżdżonej
    pętli, chyba lepsze wyjście niż wyjście z jednej i sprawdzenie warunku
    by wyjść z drugiej.
    A wstawki assemblerowe - człowiek robi to co powinien robić komputer,
    zmieni się typ danych i cała wstawka do przerobienia.


strony : [ 1 ] . 2 ... 6


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: