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

World: r4wp

[#Red] Red language group

Kaj
22-Jun-2013
[8569x3]
The problem is that there is no final solution. In practice, I have 
mixed Red and Red/System code in many places, and I'm already often 
mixed up between the two. So if you change Red/System to be 0 based, 
there will be a new class of errors where programmers think in Red 
in their Red/System code, or in Red/System in their Red code. And 
as Arnold hints at, this will create an eternal pressure from technical 
people to make Red 0 based, and then we have given up on the human 
centered goals of REBOL and are back at square one - which will then 
have to be renamed square 0
Arnold, if you want to provide your random function as a library 
to other programmers, then yes, you should include a function to 
clean up its internal state
Doc, I don't know if you've done other tests, but in the benchmarks 
so far Red/System was only 4 times slower than optimised C in floating 
point code. For integer code, it was around twice slower than optimised 
C, so the Mersenne Twister confirms this
DocKimbel
22-Jun-2013
[8572x2]
I thought it was twice slower than unoptimised C?
this will create an eternal pressure from technical people to make 
Red 0 based

 In fact, I've decided since a while to add PICKZ and POKEZ to Red 
 so 0-base algorithms would be more natural to implement. I need to 
 add an entry in Trello about that or I will keep forgetting about 
 it...
Kaj
22-Jun-2013
[8574x2]
It's a bit confusing, but Red/System integer is as fast as unoptimised 
C (x 1 in function calling, 1.3 slower in hard integer as measured 
by XieQ), twice as slow as optimised C, and Red/System floating point 
is four times as slow as optimised C
Which also means that Red/System floating point is twice as slow 
as unoptimised C
Arnold
22-Jun-2013
[8576]
Any fine examples of how to program refinements in Red(/System) I 
can use to copycat?
Kaj
22-Jun-2013
[8577]
Red/System doesn't have refinements. Refinements in Red are almost 
exactly like in REBOL
Arnold
22-Jun-2013
[8578]
Hmm random/seed needs an input, random does not, but has an output 
that random/seed has not.
Kaj
22-Jun-2013
[8579x4]
As a function, you'd have to call that SEED or seed-random in Red/System
If you want to offer multiple functions as a library, you can wrap 
their shared state in a CONTEXT
Then you can have random/seed, but it won't be a refinement :-)
And it will definitely stop looking like C :-)
Arnold
22-Jun-2013
[8583]
It certainly would be nice to wrap all possibilities up in one package.
Kaj
22-Jun-2013
[8584]
I think that's something different than what I meant
Arnold
22-Jun-2013
[8585]
I think about a flexible solution to use the one random routine you 
want or need.
Kaj
22-Jun-2013
[8586x2]
You can implement several algorithms with the same interface. CONTEXT 
is useful there. Then you can #include the one implementation you 
want
There are many such constructs in my bindings and Red itself
Oldes
23-Jun-2013
[8588]
Hi Doc, I noticed that you published Android support yesterday. Will 
you publish also some example how to use it?
Kaj
23-Jun-2013
[8589]
Note that it's preliminary, in the development branch
Oldes
23-Jun-2013
[8590x2]
Is it a problem? :)
I consider all branches to be a development as all Red/S is still 
in alpha (or is it already beta?) version.
Kaj
23-Jun-2013
[8592x2]
I think Red/System counts as beta, as far as v1 is concerned
I don't know if it's a problem. What I do know is that the Android 
port doesn't fully work yet. If you consider it developmental, then 
you can also expect Doc to add examples later. Anyway, I was just 
providing a preliminary answer for you because Doc is offline
DocKimbel
23-Jun-2013
[8594x3]
Hi Oldes, I have pushed online only the low-level layers of the Android 
port. I will push the rest after some cleanups most probably tomorrow. 
It's working fine on pre-4.1 Android systems, but I'm still struggling 
with low-level bugs with 4.1+.
I will provide the full source code of the preview demo I've posted 
and will probably add another demo. It's still low-level manipulations 
of the Android Java framework, the final layers of abstractions are 
not yet there (dialects, schemes, ...).
I will need to go back to object! implementation in Red before implementing 
those layers.
Andreas
23-Jun-2013
[8597]
Quick testing of the MT Red/S and C versions on my machine give a 
~4x difference in speed.
Kaj
23-Jun-2013
[8598]
Odd. Is that on a Mac?
Andreas
23-Jun-2013
[8599]
Linux
Kaj
23-Jun-2013
[8600]
Which GCC version?
Andreas
23-Jun-2013
[8601]
Red/System (current master, g0c9c1bf): 2.5s
GCC 4.8.1 -O0: 1.9s
Clang 3.3 -O0: 1.6s
Clang 3.3 -O2: 0.6s
GCC 4.8.1 -O2: 0.5s
Kaj
23-Jun-2013
[8602x3]
So there's a much bigger difference between optimised and unoptimised 
versions than in previous tests
I was on an older GCC version then, 4.1.2 or 4.2.3
Xie is on Windows, and his compiler is apparently called cl. XieQ, 
is that CLang? Which version?
Andreas
23-Jun-2013
[8605]
That's MSVC.
Kaj
23-Jun-2013
[8606]
Perhaps GCC has gotten better at optimisation
Andreas
23-Jun-2013
[8607x3]
Compared to 6-year old GCC 4.1.2, it certainly has improved a lot.
Just dug one of your Fibonacci results from back in Feb-2012, that 
used GCC 4.43.
dug up*
Kaj
23-Jun-2013
[8610x2]
Oh, don't remember that
Ah, it must have been GoboLinux's GCC
Andreas
23-Jun-2013
[8612]
You mentioned the benchmarks running on Syllable Server.
Kaj
23-Jun-2013
[8613x3]
Yes, that's why I thought 4.2.3. But I would have tried them on Syllable 
Workstation on top of Syllable Server
That's an unreleased GoboLinux-on-Syllable-Server FrankenLinux
So it's a pretty big difference in optimisation, and MSVC doesn't 
show it
XieQ
23-Jun-2013
[8616]
I use VS2012 and it's MSVC ver 17.
Kaj
23-Jun-2013
[8617]
Thanks
Arnold
23-Jun-2013
[8618]
We

 are a team! Yoho!! According to Frank Ruben on the Red mailinglist. 
 He has a question about interfacing a C app in Red/System.