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

World: r3wp

[Core] Discuss core issues

Terry
17-May-2010
[16636]
FIND, SELECT and PICK are blazing.. foreach is a game killer. Need 
to work out a way to FIND all values
Pekr
17-May-2010
[16637]
Hmm, too long :-)

to-integer to-string first second parse to-string 123.456 "."
Sunanda
17-May-2010
[16638]
You could tweak something like this:
    res: make block length? blk
    while [ind: find blk 23]
         [print blk append res index? ind blk: skip blk last res]
    blk: head blk
    probe res


But remember the first rule of REBOL Code Golf: parse always wins.....We're 
now just waiting for a parse guru to show us how :)
Graham
17-May-2010
[16639]
Ladislav is working on it now :)
Terry
17-May-2010
[16640]
This is the last piece to my Redis killer
Pekr
17-May-2010
[16641x2]
parse blk [some [s: set value integer! (if value = 23 [print index? 
s])]]
not sure my version will be the smartest solution, but you can try 
how fast it is :-)
Ladislav
17-May-2010
[16643x2]
indices?-1: func [
	series [series!]
	value
	/local result
] [
	result: make series 0
	while [series: find series value] [
		append result index? series
		series: next series
	]
	result
]

indices?-2: func [
	series [series!]
	value
	/local result
] [
	result: make series 0
	parse series [

  any [1 1 value series: (append result subtract index? series 1) | 
  skip]
	]
	result
]
>> time-block [indices?-1 blk 23] 0,05
== 0.000006591796875

>> time-block [indices?-2 blk 23] 0,05
== 0.000005645751953125
(in R3)
Pekr
17-May-2010
[16645]
Could you rewrite my example as indices-3? :-)
Terry
17-May-2010
[16646]
How about Rebol 2 version?
Graham
17-May-2010
[16647x2]
pekr, your example will be slower
since your comparison is occuring in a mezzainine
Pekr
17-May-2010
[16649]
what mezzanine?
Terry
17-May-2010
[16650]
Lad, it works in R2 as well.
Graham
17-May-2010
[16651x2]
if value = 23
but Ladislav is doing this 

1 1 23
Ladislav
17-May-2010
[16653]
yes, that (in R3) means, that the times obtained are in R3
Pekr
17-May-2010
[16654x2]
where do I get time-block from for R3?
where do I get time-block from for R3?
Ladislav
17-May-2010
[16656x2]
Write:

do http://www.fm.tul.cz/~ladislav/rebol/timblk.r
hmm, what does this mean? Is it intended? In R3:

>> exists? http://www.fm.tul.cz/~ladislav/rebol/timblk.r
== none
Pekr
17-May-2010
[16658x2]
Hmm, my version is much slower:

indices?-3: func [
        series [block!]
        value  [integer!] 
        /local result
][
        result: make series 0
        parse series [

               any [s: set wanted integer! (if value = wanted [append result index? 
               s])]
        ]
        result
]


>> time-block [indices?-1 blk 23] 0,05
== 0.000004669189453125

>> time-block [indices?-2 blk 23] 0,05
== 0.0000039520263671875

>> time-block [indices?-3 blk 23] 0,05
== 0.0000059661865234375
what is this dirty trick good for? :-)

1 1 value ???
Graham
17-May-2010
[16660]
It's because you can't match an integer like a word
Terry
17-May-2010
[16661x2]
looks like foreach is still the winner (on r2)
Against a block with 100,000 integers

Lad's : 0.047
foreach: 0.044
Ladislav
17-May-2010
[16663]
Terry, you did not write the Foreach-base algo here, so nobody can 
compare...
Graham
17-May-2010
[16664]
1 1 value means to run the rule once and only once where value is 
the rule
Pekr
17-May-2010
[16665]
A bit adapted Lad's version (does not use substraction):

indices?-4: func [
	series [series!]
	value
	/local result
] [
	result: make series 0
	parse series [
		any [series: 1 1 value (append result index? series) | skip]
	]
	result
]


>> time-block [indices?-2 blk 23] 0,05
== 0.000003936767578125

>> time-block [indices?-4 blk 23] 0,05
== 0.000003753662109375
Ladislav
17-May-2010
[16666x2]
interesting, I thought, that this modification would be slower
(index?-2 spares four assignments, while index?-4 spares two subtract 
calls)
Terry
17-May-2010
[16668x2]
what are your results compared to foreach?
gotta go.. bedtime in the pacific northwest
Pekr
17-May-2010
[16670x3]
Is there any other way of how to put word in, instead of 1 1 value? 
Quote? Hmm, probably not ... I don't like the form ....
if we have 'set, we could have 'get, no?
Replacing "1 1 value" by "quote (value)" as variant 5:

indices?-5: func [
	series [series!]
	value
	/local result
] [
	result: make series 0
	parse series [

  any [series: quote (value) (append result index? series) | skip]
	]
	result
]

>> time-block [indices?-1 blk 23] 0,05
== 0.0000047607421875

>> time-block [indices?-2 blk 23] 0,05
== 0.000003936767578125

>> time-block [indices?-3 blk 23] 0,05
== 0.0000059814453125

>> time-block [indices?-4 blk 23] 0,05
== 0.00000372314453125

>> time-block [indices?-5 blk 23] 0,05
== 0.000003692626953125
Graham
17-May-2010
[16673x2]
Nice .. we don't have quote in r2
Wonder if that could be back ported to r2 ...
Pekr
17-May-2010
[16675]
Matrix - There is no spoon ...
REBOL - There is no R2 ....

... forget R2 :-)
Graham
17-May-2010
[16676]
Brian will object anyway ...
Pekr
17-May-2010
[16677]
I think that backporting parse, which is totally rewritten for R3, 
is really meaningless waste of energy ...
Graham
17-May-2010
[16678x2]
except for those of us using R2
Remember that we are paying R2 customers .. and R3 is not going to 
be usable for a few more years
Pekr
17-May-2010
[16680]
If you would not use GUI, what exactly would be holding you back? 
You created even basic networking schemes? As for me, I miss fixed 
'call - it is still hugely crippled and absolutly useless ...
Graham
17-May-2010
[16681]
I don't do any non gui apps
Pekr
17-May-2010
[16682]
Graham - that is nonsense, no? I mean - not being usable for few 
more years ... but we should move the discussion to R3, or advocacy 
...
Graham
17-May-2010
[16683x2]
Pekr, it's still alpha!
It took 4 years to reach alpha
Pekr
17-May-2010
[16685]
e.g. for me, RebGUI is a dead end. I talked to Bobik, and he is back 
to VID for simple stuff. There were many changes lately, and some 
things got broken, and it does not seem to be supported anymore. 
As for GUI, I believe that in 2-3 months, you will be able to talk 
otherwise, as Robert wants to move his tools to R3 definitely ...