r3wp [groups: 83 posts: 189283]
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

World: r3wp

[!REBOL3]

Endo
26-Jul-2010
[4047]
use doesn't return an object, so its overhead is less I guess.
Henrik
26-Jul-2010
[4048]
and you can specify a list of words, thus being entirely independent 
of the code inside.
Endo
26-Jul-2010
[4049x2]
So, you can define a global variable without using set 'xxx = yyy.
Here is my benchmarks:

benchmark [use [a b c d] [a: 1 b: "xyz" c: 3 d: a * c]] ; == 0:00:01.094
benchmark [context [a: 1 b: "xyz" c: 3 d: a * c]] ; ==0:00:01.484
my benchmark function runs the block 1.000.000 times.
Henrik
26-Jul-2010
[4051]
interesting
Endo
26-Jul-2010
[4052]
benchmark: func [b][s: now/precise loop 1000000 [do b] difference 
now/precise s]
Graham
26-Jul-2010
[4053x2]
miniscule difference
I should use this for my web pages ...
sqlab
26-Jul-2010
[4055]
I get different results
>> benchmark [context [a: 1 b: "xyz" c: 3 d: a * c]]
== 0:00:01.455
>> benchmark [use [a b c d] [a: 1 b: "xyz" c: 3 d: a * c]]
== 0:00:03.753
Endo
26-Jul-2010
[4056x2]
strange..
>>  benchmark [context [a: 1 b: "xyz" c: 3 d: a * c]]
== 0:00:01.468
>> benchmark [context [a: 1 b: "xyz" c: 3 d: a * c]]
== 0:00:01.469
>> benchmark [context [a: 1 b: "xyz" c: 3 d: a * c]]
== 0:00:01.469
>> benchmark [context [a: 1 b: "xyz" c: 3 d: a * c]]
== 0:00:01.5
>> benchmark [use [a b c d] [a: 1 b: "xyz" c: 3 d: a * c]]
== 0:00:01.093
>> benchmark [use [a b c d] [a: 1 b: "xyz" c: 3 d: a * c]]
== 0:00:01.094
>> benchmark [use [a b c d] [a: 1 b: "xyz" c: 3 d: a * c]]
== 0:00:01.094
>> benchmark [use [a b c d] [a: 1 b: "xyz" c: 3 d: a * c]]
== 0:00:01.094
@sqlab: try to bigger value.
sqlab
26-Jul-2010
[4058]
>> benchmark [context [a: 1 b: "xyzdddddddd" c: 3 d: a * c]]
== 0:00:14.423


>> benchmark [use [a b c d] [a: 1 b: "xyzdddddddd" c: 3 d: a * c]]
== 0:00:37.302
Endo
26-Jul-2010
[4059]
very strange.. I guess it's because of OS, hardware etc.
>> benchmark [context [a: 1 b: "xyz" c: 3 d: a * c]]
== 0:00:15.048
>> benchmark [use [a b c d] [a: 1 b: "xyz" c: 3 d: a * c]]
== 0:00:11.11
for 10.000.000 times.
Ladislav
26-Jul-2010
[4060]
Endo, the thing is much simpler than that. I bet, that you are using 
R2
Endo
26-Jul-2010
[4061]
ofcourse :)
Ladislav
26-Jul-2010
[4062]
then, read the name of this group
sqlab
26-Jul-2010
[4063]
That explains it.
Endo
26-Jul-2010
[4064x2]
oh, yes, sorry, I just wanted to reply Grahams question..
so, use and context are really different in R3.
BrianH
26-Jul-2010
[4066x2]
USE is a wrapper around a closure!. CONTEXT creates an object. Very 
different.
USE is mezzanine in R3 - source it.
Endo
26-Jul-2010
[4068]
Sure, I would think that USE would be faster than CONTEXT (as in 
R2) but it is not.
BrianH
26-Jul-2010
[4069x3]
USE is just a helper function in R3. We use modules as the primary 
structuring model now.
Or objects.
Now if you created the closure yourself ahead of time, instead of 
creating a new closure every time (as USE does) then it would be 
faster.
Oldes
26-Jul-2010
[4072]
Can you show how?
BrianH
26-Jul-2010
[4073]
blah: closure [a b c d] [a: 1 b: "xyzdddddddd" c: 3 d: a * c]
benchmark [apply :blah []]
RobertS
26-Jul-2010
[4074x3]
HTML of new R3 doc pages has similar problems on most pages due to 
no urlencode of ampersand in urls and invald <th> declarations using 
old <tr> attrib values for vertical-align in a <th> element.  I would 
gladly fix ad hoc and you can fix your page gen tools (?) later
test: 42 ;  test:none  ;  comment { test remains 42 but no error 
unlike, say, simple undefined  testnone   That missing space looks 
nasty when test:none should have been    test: none           Is 
this a bug in R3?    test:none does not return none but instead returns 
  test:none
>> test: 42
== 42
>> test:none
== test:none
>> testnone
** Script error: testnone has no value
Oldes
26-Jul-2010
[4077x2]
that's a bug:
>> test:none: 1
== 1

>> test:none
== test:none
And it's bug in R2 as well.
Endo
26-Jul-2010
[4079]
I don't think it is a bug, test:none: is a url.
>> test:none: print "x"
== x

if it would a set-word then it should give an error like "test:none 
needs a value"
x: print "a"; == x needs a value
>> ? test:none:
== test:none: is an url
Oldes
26-Jul-2010
[4080]
probably you are right.. maybe it's for cases like>  mailto:[carl-:-rebol-:-xxx] 
 <not very useful imho :)
RobertS
26-Jul-2010
[4081]
a tolerated bug in R2 becomes a revered feature in R3, no?   If that 
is not a bug, then I may be the pope.  Or is it "the caprice of the 
colon", otherwise known as 'the big C" ?  You must excuse me, Jon 
Stwarrt just explained that science is faith and I am still in awe.
Chris
27-Jul-2010
[4082]
Single colon urls, can use it for:

Machine tags - one:two=three
For taguris - tag:example.com,2006:Fluffy 
Database - db:movies
Placeholders - go:here

And mailto: ... which can have it's merits, eg. - mt: find "mailto:" 
load/next mt (not for spam)


All of which you can write mini port handlers for, should you have 
the need...
BrianH
27-Jul-2010
[4083]
RobertS, it's not a bug even in R2.
Maxim
29-Jul-2010
[4084]
has find/all been discussed in relation to R3?  I think its a huge 
gap in REBOL.   maybe there's another function for this, but I'd 
rather have it "close to the source".
Henrik
29-Jul-2010
[4085]
R3 A102 released internally. (Have no other info yet)

http://www.rebol.com/r3/changes.html
Oldes
29-Jul-2010
[4086]
http://www.rebol.com/r3/downloads/r3-host-kit-a102.zip
Graham
29-Jul-2010
[4087]
No support for structures yet?
BrianH
29-Jul-2010
[4088x3]
No conversion functions yet, if that is what you mean. No struct! 
type as well, but that was a given. You can pass pointers to structures 
around as the handle! type, structure data in the binary! type, and 
convert using extension functions, or even REBOL code for binary! 
data.
If you want a great set of conversion functions start writing them, 
and get others involved for the advice and help. You might consider 
starting with the conversion blog here: http://www.rebol.net/cgi-bin/r3blog.r?view=0317#comments
If conversion functions aren't done by the time I finish the module 
system revamp, and I have the time, I'll try implementing the model 
suggested in the comments of that blog. Not the struct! type though, 
that would be terrible for conversions.
Graham
31-Jul-2010
[4091x3]
A quick poll .. who is actually working on end user projects using 
R3 now??
Or, if that is too much to expect .. who is actually using R3 for 
anything??
And if you're not .. what is the thing that is blocking you the most 
from using R3 ?
Pekr
31-Jul-2010
[4094]
GUI, console (not willing to experiment that much with the Windows 
default one), call, protocols (ftp, email, easy-cgi), DB (mysql, 
sqlite)
Graham
31-Jul-2010
[4095x2]
Well, of those, I think I only see 'call and 'gui as blocking ... 
as the others are either usable in some sort of fashion
we have suffix? ... so why not root? ( or whatever? )

root?: func [ f  ][
    copy/part f (length? f) - length? suffix? f
]