Raspberry BASIC > Programming Challenges

SALC Ubuntu 64

(1/6) > >>

AIR:
I reworked the FreeBasic submission, and ran it on my Ubuntu PI4:


--- Code: FreeBasic ---' FreeBasic - 1mil3.bas DIM SHARED a(1000001) AS INTEGER function Reverse( byref source as string ) as string    dim as integer first = 0, last = Len(source)-1     while( first < last )        Swap source[first], source[last]        first += 1 : last -= 1    wend     return sourceend function sub mil()    dim as string s,t,r    dim as integer x,c     FOR x = 1 TO 1000000        c = (x - 1) MOD 26        s &= CHR(c + 65)        a(x) = x        IF c = 25 THEN            t &= s            s = ""            c = 0        ENDIF    NEXT     r = Reverse(t)     PRINT "r LEN: " & LEN(r)    PRINT "Front: " & LEFT(r, 26)    PRINT "Back:  " & RIGHT(r, 26)    PRINT "UBVal: " & a(1000000)end sub  mil() 
riveraa@dpi:~/tmp$ timex ./1mil3
r LEN: 999986
Front: ZYXWVUTSRQPONMLKJIHGFEDCBA
Back:  ZYXWVUTSRQPONMLKJIHGFEDCBA
UBVal: 1000000
0.16user 0.02system 0:00.18elapsed 98%CPU (0avgtext+0avgdata 11596maxresident)k
0inputs+0outputs (0major+2623minor)pagefaults 0swaps


AIR.

EDIT:  Cleaned up code.

John Spikowski:
I need to build ScriptBasic on this Ubuntu 64 RPi 4B.

John Spikowski:
I think a round 4 is in order but this time running on Ubuntu 64 on the RPi 4B 4GB.

John Spikowski:
ScriptBasic (Ubuntu 64 RPi 4B 4GB)


--- Code: Script BASIC ---' ScriptBasic - 1mil4.sb OPEN  "t_file" FOR OUTPUT AS #1 s = ""SPLITA STRING(1000001,"0") BY "" TO a FOR x = 1 TO 1000000  s &= CHR(((x - 1) % 26) + 65)  a[x] = x  IF LEN(s) = 26 THEN    PRINT #1, s    s = ""  END IFNEXTCLOSE(1) flen = FILELEN("t_file")OPEN "t_file" FOR INPUT AS #1t = INPUT(flen, 1)CLOSE(1)t = STRREVERSE(t) PRINT "t LEN: ",LEN(t),"\n"PRINT "Front: ",LEFT(t, 26),"\n"PRINT "Back:  ",RIGHT(t, 26),"\n"PRINT "UBVal: ",a[1000000],"\n" 

ubuntu@rpi4b:~/sbrt/examples$ timex scriba 1mil4.sb
t LEN: 999986
Front: ZYXWVUTSRQPONMLKJIHGFEDCBA
Back:  ZYXWVUTSRQPONMLKJIHGFEDCBA
UBVal: 1000000
6.60user 0.79system 0:07.42elapsed 99%CPU (0avgtext+0avgdata 277268maxresident)k
0inputs+1960outputs (0major+69241minor)pagefaults 0swaps
ubuntu@rpi4b:~/sbrt/examples$


No big improvement with ScriptBasic under 64 bit on the RPi 4B. Everything built  fine using the Linux dependency list.

John Spikowski:
C (Ubuntu 64 RPi 4B 4GB)


--- Code: C ---// C - 1mil4.c - AIR #include <stdlib.h>#include <stdio.h>#include <glib.h>#include <glib/gprintf.h> int main(int argc, char **argv) {        GString *s = g_string_new(NULL);        GString *t = g_string_new(NULL);        int a[1000001] = {0};         for (int x = 0; x < 1000001; x++) {                a[x] = x;                g_string_append_c(s,(char)(x%26)+65);                if (s->len == 26) {                        g_string_append(t,g_strreverse(s->str));                        g_string_assign(s,"");                }        }         g_printf("r LEN: %d\n",t->len);        g_printf("Front: %.*s\n", 26, t->str);        g_printf("Back:  %s\n", t->str + t->len - 26);        g_printf("UBVal: %d\n",a[1000000]);         g_string_free (s,TRUE);        g_string_free (t,TRUE);} 

ubuntu@rpi4b:~/salc/c$ gcc -O3 1mil4.c  $(pkg-config --libs --cflags glib-2.0) -o 1mil4
1mil4.c: In function ‘main’:
1mil4.c:22:27: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘gsize’ {aka ‘long unsigned int’} [-Wformat=]
   22 |         g_printf("r LEN: %d\n",t->len);
      |                          ~^    ~~~~~~
      |                           |     |
      |                           int   gsize {aka long unsigned int}
      |                          %ld
ubuntu@rpi4b:~/salc/c$ ls -l 1mil4
-rwxr-xr-x 1 ubuntu ubuntu 13704 Dec 15 16:03 1mil4
ubuntu@rpi4b:~/salc/c$ timex ./1mil4
r LEN: 999986
Front: ZYXWVUTSRQPONMLKJIHGFEDCBA
Back:  ZYXWVUTSRQPONMLKJIHGFEDCBA
UBVal: 1000000
0.01user 0.01system 0:00.03elapsed 93%CPU (0avgtext+0avgdata 6576maxresident)k
0inputs+0outputs (0major+1352minor)pagefaults 0swaps
ubuntu@rpi4b:~/salc/c$

Navigation

[0] Message Index

[#] Next page

Go to full version