Wpis z mikrobloga

Na #studbaza mieliśmy zrobić program który m.in. ma przemielić plik z danymi. Ja robiłem w #cpp, kolega w #csharp "bo nie trzeba pisać tyle kodu"
u mnie wczytanie pliku i sparsowanie danych zajmuje około


a u kolegi w super C Sharpie



troche #humorinformatykow
  • 41
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@BloodDeath94: @kyaroru: Jako człowiek piszący w Javie (podobny schemat co C#) napiszę, że to prawda - w Javie JIT robi takie optymalizacje, że kod może być szybszy niż w C++, po prostu jest dostosowywany pod konkretne użycie. Natomiast kompilacje są o ile dobrze pamiętam dwóch typów, C1 i C2, oba typy wymagają pewnej liczby uruchomień do uruchomienia się i komplikacji kodu :)
  • Odpowiedz
@mihaubiauek: Nie. Od dobrego kodu w C++ też może być szybszy. Chyba nie zdajesz sobie sprawy ile JIT może usprawić. On potrafi zinline'ować całe funkcje, przestawić instrukcje, zrobić spłaszczenie pętli i wiele, wiele innych. Kod w C++ może być zoptymalizowany tylko raz, JIT dostosuje się do Twojego konkretnego urządzenia. Ale to wymaga wielu powtórzeń, dlatego uruchomienie kodu Javy raz nic nie da - będzie wolniejsza. Od ok 2000 powtórzeń zaczynają
  • Odpowiedz
@BloodDeath94: Podstawowa sprawa tycząca się każdego pomiaru czasu. Załóżmy, że mierzysz czas trwania jakiegoś procesu t z niepewnością dt (wynikającą np. z dokładności zegara czy tego że system jest wielowątkowy i czasem sobie kontekst przełączy bo inne rzeczy też się w tle dzieją), to mierząc zdarzenie N razy i licząc średnią zmniejszysz niepewność do dt/N. Dlatego jeśli chcesz uzyskać czas wykonania jakiejś tam krótkiej operacji z sensowną niepewnością to robisz
  • Odpowiedz
@BloodDeath94: szybkośc pisania kodu jest mniej więcej odwrotnie proporcjonalna do syzbkości wykonywania. i zabierając się do tego warto pomyśleć czy ta różnica w 20 milisekund jest warta by spędzić 2 doby więcej klepiąc kod w jakimś niskopoziomowym krejzolu, by uruchomić program trzy razy w swoim życiu.
  • Odpowiedz
@wkp22: Nie można przesadzać w żadną ze stron, bo dzięki takim hasłom rodzi się epoka programistów i projektantów, którzy w ogóle nie rozumieją idei optymalizacji i mówią, że "co to za problem, że nasza aplikacja wyświetlająca rozkład jazdy autobusów zajmuje 1 GB RAMu i na czterordzeniowym ARMie szuka połączenia z przystanku przez 30 sekund, przecież smartfony mają po osiem". Kolejowy rozkład jazdy HAFAS na Windows 95 robił to w kilka
  • Odpowiedz
@BloodDeath94: > Funkcja clock ( ) zwraca przybliżoną wartość czasu procesora zużytego przez program. Wartość ta jest wyrażona w jednostkach, których CLOCKSPERSEC przypada na jedną sekundę (czyli clock()/CLOCKSPERSEC jest czasem wyrażonym w sekundach). CLOCKSPERSEC zgodnie ze standardem POSIX powinnobyć stałą równą 1 000 000 bez względu na rzeczywistą wartość cyklu
  • Odpowiedz
@BloodDeath94: btw2

pogrzeb sobie w niecie i zastanów sie, dlaczego wszyscy piszą, że czas w ms oblicza się jako

(stop-start)/(CLOCKS_PER_SEC/1000)
a nie jak napisałeś
  • Odpowiedz