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

World: r3wp

[Core] Discuss core issues

Henrik
7-Dec-2011
[2621]
if I have a file with url-encoded chars in it, what's the fastest 
way to decode them?
Dockimbel
7-Dec-2011
[2622]
dehex
Henrik
7-Dec-2011
[2623]
Thank you very much. I forgot that.
Henrik
10-Dec-2011
[2624]
what is the fastest way to find the number of digits in a number, 
if you want to use it to calculate the pixel width of the number 
for a table column? simply using:

length? form number

?
Geomol
10-Dec-2011
[2625x2]
My guess would be:

1 + to integer! log-10 number

, but that's slightly slower than yours, it seems.
Can your number both be integer and decimal?
Henrik
10-Dec-2011
[2627]
it's most likely to be a decimal
Geomol
10-Dec-2011
[2628]
Then mine won't work.
Henrik
10-Dec-2011
[2629]
I may have found another way without needing to work on the length. 
Thanks, anyway.
Geomol
10-Dec-2011
[2630]
:)
Ladislav
12-Dec-2011
[2631]
but that's slightly slower than yours, it seems
 - strange, here it looks much faster than length? form
Geomol
12-Dec-2011
[2632]
>> number: 1234                                       
== 1234
>> time [loop 1000000 [1 + to integer! log-10 number]]
== 0:00:00.293239
>> time [loop 1000000 [length? form number]]          
== 0:00:00.28022

On R2 version 2.7.7.2.5
Sunanda
12-Dec-2011
[2633]
I see the log-10 loop as around 18% faster under core 2.7.8.

So this optimisation depends, it seems, on specific machines and 
versions.
Kaj
12-Dec-2011
[2634]
It would depend on the relative speeds of the CPU and the FPU
Ashley
14-Dec-2011
[2635]
Ran code like the following against a 600MB file of 500,000+ lines:

	file: read/lines %log.csv
	foreach line file [
		remove/part line 1000
	]


and was surprised that the foreach loop was near instantaneous (I'd 
assumed 500,000+ removes would at least take a second or two). I'm 
not complaining, just curious. ;)
Geomol
14-Dec-2011
[2636]
Does it work? Or do you hit a 4GB boundary with some internal structures, 
so there is an error, you don't get out?
Ashley
14-Dec-2011
[2637]
It certainly worked (file size was 400MB not 600MB).
BrianH
14-Dec-2011
[2638]
R2 or R3? R3 can do removes from the head of the string as fast as 
it can from the tail - near instantaneously. I don't think that this 
is true for R2.
Ashley
15-Dec-2011
[2639]
R2.
Endo
15-Dec-2011
[2640]
I do something similar, generating 10'000 lines and writing to a 
file takes 5-6 seconds to complete on my Intel Core 2 Duo E7400 (2.8 
Ghz) 3GB RAM.

500'000 lines a bit too much but you read the whole file into memory 
so it is possible. Your PC is a good one as well I think.
Ashley
16-Dec-2011
[2641]
iCore 7 with 8GB RAM and a 256GB SSD ... work PC.
Endo
16-Dec-2011
[2642]
which means 10 times better than mine :) its normal to have that 
performance with 8GB RAM + SSD I think. file & block operations & 
foreach is fast on R2 in my experience.
GrahamC
16-Dec-2011
[2643]
Since Carl seems to have abandoned Rebol ...I wonder if this triggers 
the release of the source code held in escrow?
Sunanda
16-Dec-2011
[2644]
That would depend on what the escrow license says. Unless anyone 
here has signed a REBOL escrow source license, all we have is a vague 
description:
   http://www.rebol.com/faq.html#058
GrahamC
16-Dec-2011
[2645]
I wonder if Reichart  knows ... Qtask depends on Rebol
PeterWood
17-Dec-2011
[2646]
He may well know but I think that it is wishful thinking that the 
source may be released under an escrow agreement just because Carl 
has been quiet for a while.
Henrik
17-Dec-2011
[2647]
Since Carl seems to have abandoned Rebol

 - there is no evidence of that. A few weeks ago, it was stated here 
 that Carl was working on R3 again.
Gabriele
17-Dec-2011
[2648]
Qtask does not depend on any changes being made to REBOL.
Henrik
17-Dec-2011
[2649x2]
YY is a block of 4 decimals, which should be containing the same 
value, but it seems they are not the same to UNIQUE:

== [5.0 5.0 5.0 5.0] ; derived from a calculation
>> yy/1 == yy/2
== true
>> yy/1 == yy/3
== true
>> yy/1 == yy/4
== true
>> unique yy
== [5.0 5.0] ; huh?

>> zz: [5.0 5.0 5.0 5.0] ; typed directly in
>> unique zz
== [5.0]
Seems it's already been repported:

http://www.rebol.net/cgi-bin/rambo.r?id=4093&
Geomol
17-Dec-2011
[2651]
It's internal rounding in REBOL, is my guess. You can see it with 
R3:

>> to decimal! #{4013 FFFF FFFF FFFF}
== 5.0
>> to decimal! #{4014 0000 0000 0000}
== 5.0
>> to decimal! #{4014 0000 0000 0001} 
== 5.0

So decimals may look the same, even if they're not.
Henrik
17-Dec-2011
[2652]
it works in R3.
Geomol
17-Dec-2011
[2653x2]
In R3, you can try do a >to binary!< on the results from the calculation 
and see the difference.
In R2, you can do some rounding before calling unique.
Ladislav
17-Dec-2011
[2655x2]
In R3 also:

>> print mold/all to decimal! #{4013 FFFF FFFF FFFF}
4.9999999999999991
>> print mold/all to decimal! #{4014 0000 0000 0000}
5.0
>> print mold/all to decimal! #{4014 0000 0000 0001}
5.0000000000000009
see

    http://issue.cc/r3/1634
amacleod
18-Dec-2011
[2657]
I need to extract the data from an image file so it does not include 
the "64#" header and I just have the 64 bit encoding: 

64#{
/9j/4faARXhpZgAATU0AKgAAAAgABwEPAAIAAAAESFRDAAEQAAIAAAAIAAAAYgEa
AAUAAAABAAAAagEbAAUAAAABAAAAcgEoAAMAAAABAAIAAAITAAMAAAABAAEAAIdp
is3eIoxUdG7n/9k=
}


I just wnat the stuff between the quotes but as its a binary I can't 
seem to parse it or extract it with other methods like a text file.
Geomol
18-Dec-2011
[2658x2]
x: mold 64#{
/9j/4faARXhpZgAATU0AKgAAAAgABwEPAAIAAAAESFRDAAEQAAIAAAAIAAAAYgEa
AAUAAAABAAAAagEbAAUAAAABAAAAcgEoAAMAAAABAAIAAAITAAMAAAABAAEAAIdp
is3eIoxUdG7n/9k=
}

copy/part skip x 3 -5 + length? x
Notice the molded version is twice as large as the original binary.
Gabriele
18-Dec-2011
[2660]
ENBASE
amacleod
18-Dec-2011
[2661]
enbase! Easy! That's what I'm looking for thanks, guys.
Geomol
18-Dec-2011
[2662]
That wasn't clear, but good you solved your problem.
Geomol
19-Dec-2011
[2663]
The R2 dictionary for DETAB say, the string is modified, but it isn't. 
Also only the first tab before the first non-space character is replaced 
by 4 spaces, the rest with 1:

>> s: "^-abc^-def"
== "^-abc^-def"
>> detab s
== "    abc def"
>> s
== "^-abc^-def"

Has this always been this way?
Doc: http://www.rebol.com/docs/words/wdetab.html
Oldes
19-Dec-2011
[2664x4]
== "^-ab^-def"
>> detab s
== "    ab  def"
The behaviour is correct (it's not just replace/all). The dictionary 
must be bad as it does not modify.
The doc above is not so bad, but it's true, that in R3 it's really 
marked as: (Modifies)
But I'm not sure there is anybody left who can fix it.
Geomol
19-Dec-2011
[2668x2]
Is there a reason for this?

>> shift 1 32
== 1
Ah, probably just because 32 is being // 32, as can be seen with 
this:

>> shift 2 32
== 2
>> shift 2 33
== 1
Endo
19-Dec-2011
[2670]
Thats right I think:
>> shift 257 32
== 257