Wpis z mikrobloga

#programowanie #optymalizacja #intuicja #cppalboiniekoniecznie #gamedev

Jakbyście mieli strzelać, ile bajtów pamięci RAM da radę zmienić na waszym komputerze w każdej klatce tak, żeby utrzymać 60 klatek na sekundę, to ile byście powiedzieli?

Napisałem sobie programik i to sprawdziłem, i jestem trochę zaskoczony.


PS to z jednego wątku, wielowątkowo też sprawdzę, powinno się niby skalować idealnie, ale cholera wie

programik do sprawdzenia, jak ktoś chce (pisany na szybko - wiem, że słaby) http://pastebin.com/M2pT37nG
  • 13
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Felonious_Gru: no machnąłem programik, który alokuje N megabajtów, wrzuca tam K razy do każdej komórki cokolwiek, i sprawdza, ile to zajmie. I ustawiłem takie N, żeby dla K=60 program działał 1 sekundę (a tak naprawdę to ustawiłem K=600 i celowałem w czas 10 sekund, żeby zmniejszyć błąd).

Czyli że na moim (nie najgorszym) komputerze nie da rady zmienić w każdej klatce gry więcej, niż


na rdzeń, żeby chodziła w
  • Odpowiedz
@tell_me_more: w sumie sprawdziłem rozmar cache, i jest


czyli po prostu - póki to, co zmieniasz mieści się w keszu - to się zmieścisz w 60 FPS, jak się nie mieści - to nie da rady...

Trochę słabo, bo zastanawiałem się, jak by napisać grę, w której modeluję zachowanie każdego obywatela. No i d--a, jest powód, dla którego nikt tak nie robi.
  • Odpowiedz
@ufo99: chciałem napisać coś w stylu bardzo prostego simcity ale na bardzo dużą skalę. No i już przestałem chcieć. A poza tym uznałem, że warto mieć jakąś intuicję, jak szybka jest zmiana czegoś w pamięci. Może dla was jest to oczywiste - dla mnie nie było, pomimo pisania gierek i pracy w zawodzie (choć nie w gamedev) od wielu lat.
  • Odpowiedz
@tell_me_more: Chcesz powiedzieć, że w ciagu ok. 16ms byłeś w stanie zmienić tylko 6MB? W czym ty to testowałeś? W brainfucku na maszynie do pisania? 6MB to się prawie mieści w cache CPU i spokojnie powinieneś uzyskać dziesiątki GB/s, a ty uzyskałeś coś kilka rzędów wielkości mniej.
  • Odpowiedz
@leoha: tak, chcę to powiedzieć. BTW mam dokładnie 6 MB kesza. Przypadek ?

W c++. Kod jest w pierwszym komentarzu jak masz ochotę spradzić. Możliwe, że coś jest źle, bo pisałem na kolanie.

To było z ustawianiem innej (kolejnej) wartości w każdej komórce, więc w każdym cyklu oprócz mov było też inc i pobranie dolnego bajta z
  • Odpowiedz