Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

aplikacja porównująca czasy wykonania się algorytmów [C,asm]

dakta 26 Maj 2010 23:19 1012 2
  • #1 26 Maj 2010 23:19
    dakta
    Poziom 8  

    Witam!
    Na początku pragnę wszystkich pozdrowić.
    Chcę napisać aplikację, która będzie porównywała czasy sortowań kilku znanych algorytmów sortowania danych, np. QuickSort, proste wstawianie, prosty wybór, scalanie.
    Dane powinny być wczytywane z pliku, gdzie te dane będą podzielone, czyli w jednym pliku liczby będą uporządkowane, w innym nie. I tak dla tego samego pliku z danymi robimy każdy algorytm i porównujemy czasy. Na tej podstawie wyciągamy wnioski.
    Myślałem, żeby algorytmy same w sobie napisać w asemblerze, bo właśnie na przykładzie tego programu chcę nauczyć się składni, a samo GUI wklepać w C,C++?
    Proszę o rady i wskazówki dotyczące moich przemyśleń.

    0 2
  • #2 26 Maj 2010 23:58
    marcinj12
    Poziom 40  

    Hej,
    Ja tam specem w ASM nie jestem, ale z mojej styczności z nim wiem, że nie jest to prosty język do pisania zaawansowanych algorytmów. Tym bardziej że jak wnioskuję nie pisałeś w nim jeszcze. Nie wystarczy "myśleć i pisać" kodem algorytmu, każdy z tych kroków trzeba jeszcze przekładać na język procesora (proste zapisywanie do tablicy w języku wyższego rzędu 1 pętla i dwie linijki kodu, a w ASMie - przynajmniej kilkanaście i łatwo się pomylić przy przepisywaniu z rejestru do rejestru). Co więcej, możesz jakiś fragment kodu "wymyślić" mało optymalnie co zarzutuje na całą resztę.

    Algorytmy sortowań mają pewne "kroki" które należy wykonać i wykonać je dobrze, żeby algorytm zadziałał, przy ASMie w najgorszym wypadku nadłożysz dużo pracy. Wnioski które chcesz wyciągnąć będą takie same - bąbelkowe najwolniejsze, quicsort szybsze etc... Czy napiszesz to w C, w Delphi czy w VBA dostaniesz najwyżej różne rzędy wielkości tych czasów, w zależności od tego jak kompilator zoptymalizuje sobie kod maszynowy. Osobiście użyłbym do tego Excela i VBA właśnie ;), łatwo tam wstawić różne dane i potem zaprezentować wyniki np. na wykresie, z drugiej strony inne języki powinny być szybsze. A ASMa zacznij się uczyć od pisania prostych programów typu "Hello world", a jak będziesz w nim algorytm sortowania potrzebował - będzie Ci łatwiej przerobić coś co już znasz i wiesz jak działa ;P
    Pozdrawiam

    0
  • #3 27 Maj 2010 00:09
    Dr.Vee
    VIP Zasłużony dla elektroda

    Kiepski pomysł - i z nauką ASM na tego typu algorytmach i z zaczynaniem od gui w celu porównywania wydajności algorytmów.

    Jeśli celem ma być porównanie, to odpuść sobie gui (które jest wisienką na torcie) i skoncentruj się na tym, jak porównać algorytmy i interpretować wyniki - czyli jakie zestawy danych, jaki sposób uruchamiania, jaki sposób mierzenia, co może wpływać na przekłamanie pomiarów i jak się przed tym ustrzec itp. To niestety jest temat-rzeka...

    A jeśli celem jest pobawienie się ASM i napisanie gui w C/C++, to może zacznij od czegoś prostszego niż sortowanie :)

    Pozdrawiam,
    Dr.Vee

    0