Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Forth, za one sa razlčitim rasporedom vijuga...
Dodavanje grafike u ovaj Forth (gde ispod imam RayLib) se recimo svodi na ovo, funkcija za crtanje linije:

Code:
BUILTIN(77, "DRAW_LINE", draw_line, 0)
{
//    cell y2 = pop();
//    cell x2 = pop();
//    cell y1 = pop();
//    cell x1 = pop();
    DrawLine(pop(), pop(), pop(), pop(), CLITERAL(Color) {40, 40, 40, 255});
}

Ovde sam se posle ustvari setio da mi ne trebaju ni pomocne variable (x1,x2,y1,y2), jednostavno gurnu se 4 vrednosti koordinata na STACK i u ovoj funkciji samo se pokupi sa STACKA preko pop() funkcije, naravno mora da se zna red, jos je sve obrnuto.

Sta je sad tu zanimljivo, osim sto je implementacija C<>Forth brutalno prosta, kada se pozove ova funkcija u konzoli sa na primer:

Code:
200 200 300 300 DRAW_LINE

na ekranu se u sustini ne desi ništa!

Pokrenem na primer jos jednom istu komandu i malo pažljivije pratim ekran i na primer vidim iscrtanu liniju ali samo za trajanje jednog frejma! Smile

To se ustvari očekivalo jer imam dve potpuno asihrone stvari, glavnu GUI aplikaciju koja vrti svojim ritmom od 60FPS i Forth koji vrti nezavisno za sebe jer je u posebnom thread.

Dodao sam VIDEO FRAME SYNC funkciju, opet nesto prosto poput:

Code:
BUILTIN(76, "APP_FSYNC", app_fsync, 0)
{
    while (!frame_sync) usleep(100);
    frame_sync = 0;
}

Sa tim sam mogao da napravim neke proste eksperimente oko brzine da vidim šta sve može da se odradi izmedju dva frejm-a u Forth i došao do nekih 140.000 iteracija/komandi, dakle toliko imam "fore" izmedju dva Video frejma ili oko 8.4 miliona iteracija u sekundi na jednom x86_64 jezgru.

Code:
: TEST 700 0 DO I VUSET LOOP ;
: vv 100 0 DO test LOOP ;

APP_FSYNC vv vv
OK

Da li su ovo dobri ili loši rezultati je za diskusiju, samo napominjem da ništa nisam optimizovao, samo sam nabacao jedno na drugo i spojio.

PS: A gde je ovde VU-Metar? Smile Pa VU-Metar mi je posluzio u ekpserimentu brzine jer sam ga terao od 0-700 (to su neki pixeli = 0-100% otklon skale) i ustvari setovao sam ga izmedju frejmova prvo nekoliko puta, pa par desetina puta, kada sam stigao do 140.000 puta počeo je da "mrda" tj prekoračio sam vreme jednog frejma, tu je bilo DOSTA i stopirao sam dalje testiranje na tu temu Big Grin
Reply


Messages In This Thread
RE: Forth, za one sa razlčitim rasporedom vijuga... - by mikikg - 10-31-2021, 11:42 PM

Forum Jump:


Users browsing this thread: 1 Guest(s)