eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingmatlab taki wydajny? › Re: matlab taki wydajny?
  • Data: 2010-01-21 18:21:03
    Temat: Re: matlab taki wydajny?
    Od: thrunduil <t...@w...pl> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    On 21 Sty, 16:10, bartekltg <b...@g...com> wrote:

    > To nie ma nic wspolnego z pamiecia, przynajmniej nie tak, jak
    > sugerujesz.
    >  Jesli by mialo, to moj prosty kod (podany na koncu) tez by mizernie
    > dzialal.
    > Ale on nie chec, 1000 roznych mnozen wektorka dlugosci 1000
    > przez macierz 1000x1000 liczy w niecale 6s.


    nie do konca rozumiem:
    Matlab: A * B =>
    0.18sec
    Matlab: for i:1000; A*v; end => 1.84sec
    kod c for i:1000; A*v; end, wersja bledna => 1,33 sec
    kod c for i:1000; A*v; end, wersja poprawna => 7.00 sec

    A = 1000x1000, B = 1000x1000; v =1000x1

    jest blad w kodzie, ma byc
    t+=v[i]*M[j+n*i]; zamiast t+=v[i]*M[j+2*i];

    (VS, /Ox /Oi /Ot /GL /I \Projects\test\test" /D "WIN32" /D "NDEBUG" /D
    "_CONSOLE" /D "_UNICODE" /D "UNICODE" /FD /EHsc /MD /Gy /arch:SSE2 /
    Fo"Release\\" /Fd"Release\vc90.pdb" /W3 /nologo /c /Zi /TP /
    errorReport:prompt )

    co to ma pokazywac oprocz tego, ze pamiec ma znaczenie? Blad w kodzie
    nie zmienia liczby wykonanych operacji.

    zreszta
    dla A = 3000x1000; B =1000x1000; v = 1000x1
    Matlab: A * B =>
    0.537sec
    Matlab: for i:1000; A*v; end => 5.33sec

    W obu wersjach mnozenie przez wektor w petli jest 10x wolniejsze.
    Petla jest wykonywana 1000 razy, wiec roznica nie moze miec
    nic wspolnego z narzutem petli.

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

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: