• Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

World: r4wp

[#Red] Red language group

Kaj
12-Jun-2013
[8321]
I suppose you need to reboot Windows. It's not Syllable ;-)
DocKimbel
12-Jun-2013
[8322x2]
Haha, maybe not to that extent (well, I'm half-joking, for some kind 
of drivers, I would be surprised that is a requirement).
would = wouldn't
Kaj
12-Jun-2013
[8324x2]
According to the documentation, this driver can be deleted and rebuilt 
without rebooting
Is there garbage collection/reuse of series slots? Not series content, 
but their slots in the series pool?
DocKimbel
13-Jun-2013
[8326]
Yes, they use a stack-based allocation system, so each time a slot 
is popped, it becomes available for a new series. But, as series 
are not freed yet, slots are not popped.
Pekr
15-Jun-2013
[8327x2]
Just got my HTC Sensation backk from repair. Droid 4.0.1, hello app 
works nicely ...
Any news around? :-)
DocKimbel
15-Jun-2013
[8329]
No news, I'm still working on the new Android bridge, I've been busy 
most of the week with offline tasks, so I couldn't advance much. 
I finally can focus only on that since this morning, so expect some 
new apk to test by tomorrow.
Arnold
15-Jun-2013
[8330x2]
The random program in Red/System now has the same output as the original 
C version by Donald Knuth.
Next step cleaning up the code and maybe add it to the Red repository.
DocKimbel
15-Jun-2013
[8332]
Nice! How fast does it perform compared to the C version?
Arnold
15-Jun-2013
[8333x2]
ehm both very fast.. timer needed. (cooking now, so will try that 
later.)
Now how to time the script? Red/System and C, the executables have 
a start time in seconds in the terminal logs but that is imprecise 
and there is no endtime just a logout message.
Kaj
15-Jun-2013
[8335]
On OS X, there should be a time command in the terminal
Arnold
15-Jun-2013
[8336x3]
Did in a shell the following: 
time C-script
real	0m0.073s
user	0m0.028s
sys	0m0.004s
time Red/System script
real	0m0.059s
user	0m0.039s
sys	0m0.004s
Thank Kaj, found it by myself 
:)
this time ;)
Kaj
15-Jun-2013
[8339]
The user value is what matters most
Arnold
15-Jun-2013
[8340x2]
It includes a bunch of display's but both the same.
Feared so much, It is still impressive.
Kaj
15-Jun-2013
[8342x2]
How do you mean?
Red/System seems to be only a third slower. Did you compile the C 
version with optimisation?
Arnold
15-Jun-2013
[8344]
I will clear both scripts from the extra display's I built in during 
debugging.

Optimisation? Just hit build in XCode, happy it does something. You 
want the sources when I am ready cleaning them up? 

I thought about looping it a 1000 times each and see how it performs, 
but that is maybe only for more digits beyond the decimal point..
Kaj
15-Jun-2013
[8345x4]
I mean optimisation by the compiler. You should make sure an -O2 
option is passed to the compiler
Looping is a good idea to get better timing accuracy
Having debugging code in there distorts the result, and a lot compared 
to the real code, since it takes so little time
But even loading the executable takes more time than the calculation, 
so the above timing is meaningless
Arnold
15-Jun-2013
[8349x3]
I can specify Release or Debug. I used the Debug up till now.
loop 1000 times Red/System script 
real	0m18.446s
user	0m18.385s
sys	0m0.023s
Then I have 
real	0m2.424s
user	0m2.405s
sys	0m0.006s

My C is not what is used to be. No doubechecked should do same loop. 
Well if this is the case there is some improvement ahead.
One difference I found during debugging is that Red seems to initialize 
its array before using it. In the C version there was data in an 
previously unused part of one of the arrays.
If you like  I can share the sources I used.
Kaj
15-Jun-2013
[8352x3]
I don't think Red/System does. ALLOCATE should just use malloc()
To get zeroed memory, you can use MAKE in my C library binding
Is the second time for 1000 x C? Then Red/System comes out almost 
8 times as slow as C. I wouldn't expect that, either
Arnold
15-Jun-2013
[8355x2]
(I am trying to avoid as much C as possible) I am happy with the 
result being the same now, could not judge where the memory was allocated 
but it was consistent during all my testruns, as was the C array 
with it's unexplainable filled fields.
Yes that is a lot, completely agreed. I'll have a third look. Seems 
the same stuff in the loops.
Kaj
15-Jun-2013
[8357x2]
I usually get zero-filled memory in Red/System, too, but it's not 
guaranteed
C is supposed to work like that, for performance
Arnold
15-Jun-2013
[8359]
Good to know it is not guaranteed. Trouble uploading .reds file stays 
Empty.
Pekr
15-Jun-2013
[8360]
8 times slower - do you consider it bad, or good? I mean - in regards 
to how is Red/System designed ...
Kaj
15-Jun-2013
[8361]
If it's correct, it's bad. So I think it's not correct :-)
DocKimbel
15-Jun-2013
[8362]
Still prompt to jump to conclusions without even looking at what 
the code does? :-)
Kaj
15-Jun-2013
[8363]
I'm torn between defending Red/System and defending my fellow countryman
DocKimbel
15-Jun-2013
[8364]
My comment was directed to Pekr. ;-)
Arnold
15-Jun-2013
[8365x2]
No need to defend me now. I hope I am wrong, it happens ;) Should 
have made the folder public do that anyway.
randompublic folder added.
Pekr
15-Jun-2013
[8367]
Still prompt to jump to conclusions without even looking at what 
the code does
 - can you really read my message as jumping to any conclusion?
DocKimbel
15-Jun-2013
[8368x3]
Yes, you were comparing the speed of two programs without being sure 
they were implementing exactly the same algorithm.
Knuth's code could compete at C obfuscated contests. Arnold seems 
to have done a literal translation to Red/System but keeping the 
same obfuscated symbols, so not easy to read. However, it seems at 
first look that the algorithm has been well preserved.
Congrats to Arnold for doing this conversion and getting the right 
results! :)