To forum używa plików cookies
To forum wykorzystuje pliki cookies do przechowywania informacji o Twoim logowaniu, jeśli jesteś zarejestrowany, oraz informacji o Twojej ostatniej wizycie, jeśli nie jesteś zalogowany. Pliki cookies to niewielkie pliki tekstowe zapisywane na Twoim komputerze; cookies ustawiane przez to forum mogą być używane wyłącznie na tej stronie i nie stanowią zagrożenia dla bezpieczeństwa. Cookies na tym forum śledzą również, które tematy zostały przez Ciebie przeczytane oraz kiedy miało to miejsce. Prosimy o potwierdzenie, czy akceptujesz, czy odrzucasz zapisywanie tych plików cookies.

Niezależnie od wyboru w Twojej przeglądarce zostanie zapisany plik cookie, aby zapobiec ponownemu zadawaniu tego pytania. W każdej chwili będziesz mógł zmienić ustawienia cookies, korzystając z linku w stopce strony.

Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Porównanie języków programowania
#13
Pawle, dziękuję za szybką odpowiedź i udział w testach. Widać wyraźnie, że wyniki na zmiennych typu float są porównywalne dla C CodeVision oraz Bascoma. Drobne różnice wynikają z innej składni języka, sposobu przekazywania parametrów czy organizację stosu danych.

Być może problem ze zmiennymi typu float w Bascomie jest związany z normalizację i denormalizacją danych. Tak mam napisaną bibliotekę na zmienny przecinek na procesory 8051. Aby zainicjować zmienną float dowolną wartością stałą muszą ją najpierw doprowadzić do formatu zapisu liczby zmiennoprzecinkowej (normalizacja). Aby po obliczeniach mieć ponownie format dwójkowy musimy ponownie dokonać konwesji formatu zmiennoprzecinkowego na jawną postać bajtową. Wykonywanie obliczeń na danych bez normalizacji daje oczywiście błędny wynik. Celowo normalizacja, denormalizacja to oddzielne funkcje aby nie robić ich za każdym razem a tylko wtedy gdy jest to potrzebne. Przy wielokrotnych obliczeniach robimy to tylko na wejściu na nowych danych oraz na końcowym wyniku obliczeń. Stałe mogą być znormalizowane na etapie kompilacji i tak przechowywane w kodzie co oszczędza czas procesora. Być może tak samo jest w Bascomie.

Nie ukrywam rozczarowania efektami uzyskanymi pod WinAVR, może ktoś z Kolegów posługujący się tym kompilatorem spróbuje "wycisnąć" coś więcej w ramach tego testu. Kończę wersję w ASM, wyniku po powrocie ze spotkania na PW.

Zapraszam do wykonania testu na innych procesorach Bascom51, ASM51, C_51, PIC, ARM.

-------------------------------------------------------------------------------------
Wstępne wyniki dla assebmlera AVR przy obliczeniach na 64 bitach są takie:

Kod: 162 bajt (8+154)
Cykle: 1774 (4+1770)
RAM: 12 bajt

Zapewne Koledzy zastanawiają się czy to możliwe, czy raczej żart "prima aprilis-owy" ?
73 Adam
Cytuj


Wiadomości w tym wątku
Porównanie języków programowania - przez SP5FCS - 29-03-2012, 23:19

Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości