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

World: r3wp

[!REBOL3]

sqlab
8-Feb-2010
[557]
just try my example
Graham
8-Feb-2010
[558]
different results .. you're using 'random
Pekr
8-Feb-2010
[559x2]
let's try to compare following for R2 vs R3: 


 parse "abc^/def^/ghi^/" [start: any [end: newline (print copy/part 
 start end) start: | skip]]
well, just remove (print ...) ... I just want to find out the traversal 
time ....
Graham
8-Feb-2010
[561]
I normally just parse short bits of text .. so R2 looks to be 2x 
faster than R3
Pekr
8-Feb-2010
[562x3]
s: now/time/precise loop 1000000 [parse "abc^/def^/ghi^/" [start: 
any [end: newline start: | skip]]] now/time/precise - s

Three consecutive runs:
R2:
0:00:03.11
0:00:02.941
0:00:03.089

R3:
0:00:01.732
0:00:01.679
0:00:01.724
the above code does not run in R3. Dunno if "end" is forbidden or 
became a keyword, but I get following error, if I don't change end: 
to en:


>> s: now/time/precise loop 1000000 [parse "abc^/def^/ghi^/" [start: 
any [end: n
ewline start: | skip]]] now/time/precise - s
** Script error: PARSE - command cannot be used as variable: end:
** Where: parse loop
** Near: parse {abc
def
ghi
} [start: any [end: newline start: | skip...
So - for basic traversal, R3 is faster .... for my example ....
sqlab
8-Feb-2010
[565]
even with my random generated data, the number of parts should be 
always the same.

But you can also parse the same data a few times. Every times it 
will be parsed in a different number of parts
Graham
8-Feb-2010
[566]
end is a keyword!
sqlab
8-Feb-2010
[567]
The data I parse, are oftly in the 10s of MB and more.
With R2 I had no problems
Pekr
8-Feb-2010
[568]
>> start: now/time/precise loop 1000000 [parse "abc^/def^/ghi^/" 
[s: any [e: newline (append blk copy/part s e) s: | skip]]] now/time/precise 
- start
== 0:00:05.359
Graham
8-Feb-2010
[569]
Hmm... tried to parse 4M chars a few times and r2 ran out of memory 
... r3 worked fine
Pekr
8-Feb-2010
[570x2]
There really is some problem:

R2:

>> start: now/time/precise loop 1000000 [parse "abc^/def^/ghi^/" 
"^/"] now/time/precise - start
== 0:00:00.933

R3:
==  0:00:04.259
I would curecode it, along with my example, and ask Carl about the 
possible cause ...
sqlab
8-Feb-2010
[572]
I did it already.

But your example does not show the real problem. just use my example 
and you will see why.
Pekr
8-Feb-2010
[573x4]
it shows very big time penalty ...
... which does not correspond to my manual parse example above ...
WTF? I get strange beeps when running your test code :-)
try running following code:

c: ""
 for i 0 255 1 [append c to-char i]

I get a beep here ....
Graham
8-Feb-2010
[577]
each time I parse the dataset  ... I get it alternating between two 
lengths
sqlab
8-Feb-2010
[578]
I have no speaker at my pc.)
Pekr
8-Feb-2010
[579x2]
hmm, we are appending char into string ... who knows what it does 
internally :-) In charset, there are some escape/control codes, so 
maybe it causes a beep, I don't know :-)
I reported the strange beep into CC too ...
Graham
8-Feb-2010
[581x2]
I copied the dataset before each parse ... very odd
Pekr, are you sure it's not just control chars printing to windows 
console causing beep?
Pekr
8-Feb-2010
[583x3]
could be a GC problem? Maybe above "beep" means there might be some 
memory leak?
maybe ... who knows ... should not beep ....
it surely is about control chars ...
Graham
8-Feb-2010
[586]
why should it not beep?
Gabriele
8-Feb-2010
[587]
Petr, most likely you get the beep when the string is printed to 
the windows console.
Pekr
8-Feb-2010
[588]
R2 does not beep (but it has its own console)
Gabriele
8-Feb-2010
[589x2]
that is, windows does respect the BEL character.
ie. try print "^(07)"
Pekr
8-Feb-2010
[591]
yes, but I am denerved by that beeping :-)
Graham
8-Feb-2010
[592]
and this is the windows console
Gabriele
8-Feb-2010
[593]
don't include that char in your tests then, or don't print it out 
;)
Pekr
8-Feb-2010
[594]
Yes, it does so ... I will suggest the ticket dismissal ...
Graham
8-Feb-2010
[595]
more unnerving is the non reproducible parse!
Pekr
8-Feb-2010
[596]
Graham - sqlab's code uses random sets, no? What is non reproducible 
exactly?
Graham
8-Feb-2010
[597]
parse dataset "^/" returns a different value
Pekr
8-Feb-2010
[598x2]
for each consetutive run on the same dataset?
consecutive
Graham
8-Feb-2010
[600x2]
length? parse data "^/"
do that a few times
Pekr
8-Feb-2010
[602x2]
>> parse "abc^/def^/ghi^/" "^/"
== ["abc" "def" "ghi"]
I get three value block for each run ...
Graham
8-Feb-2010
[604]
on the large set ... not small sets
Pekr
8-Feb-2010
[605]
OK, I will try ...
Graham
8-Feb-2010
[606]
he just generates a large set of random chars