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

World: r3wp

[Core] Discuss core issues

GrahamC
3-Dec-2010
[570]
my queries are currently taking 2 seconds and I need subsecond performance
BrianH
3-Dec-2010
[571]
You might look at EXTRACT or MAP-EACH then. For simple queries with 
no joins, SQL is overrated.
Steeve
3-Dec-2010
[572x2]
If you give us your actual script we can find some improvment rooms. 
Despite beeing lazy, we are not bad at such game.
(if it's not a bloated one)
GrahamC
3-Dec-2010
[574]
I'm hacking into FreeDiams .. a free French drug interaction database 
:)
Steeve
3-Dec-2010
[575]
Don't trust French commercials
GrahamC
3-Dec-2010
[576]
It's a GPL app to do drug prescribing and drug interactions .. I 
am just using their database
BrianH
3-Dec-2010
[577]
Once the database is in memory you don't necessarily need to do set 
operations (SQL select). You can do iterative operations much more 
quickly.
GrahamC
3-Dec-2010
[578]
source is here https://fd.cloud-ehr.net/drugreactions.txt
Steeve
3-Dec-2010
[579x2]
huge !
/me dazzled !
BrianH
3-Dec-2010
[581]
It looks like you are using the iterative approach anyways, on the 
results of the SQL queries. If you cache the data in RAM you can 
do iterative stuff with FIND and loops, or even maps in R3 if you 
want real speed.
GrahamC
3-Dec-2010
[582]
This is a RSP app .. we've already had the discussion why Cheyenne 
is not ported to R3 :)
BrianH
3-Dec-2010
[583]
Hashes then :)
GrahamC
3-Dec-2010
[584]
huge?  Only 250 lines where a line is 2-3 rebol words :)
Steeve
3-Dec-2010
[585]
It's late here, and if see more than a dozen of lines, I could die
GrahamC
3-Dec-2010
[586x6]
there is probably a better method than the one I use to generate 
the permutations
sorry , combinations
we have something like this

drug1 [ id1 id2 id3 .. ] drug2 [ id1 id5 id6 .. ] drug3 [ id4 id7 
.. ]
I have to generate all the possible combinations of each drug id 
with all the others but not with those in the same set
so at present I think I generate all possible combinations and check 
to see if they're in the same set and if not do the sql query
that's my contribution to lazy programming :)
Steeve
3-Dec-2010
[592]
Would you kind enough and give us the expecting output from the input. 
I can't read all your lines currently.

drug1 [ id1 id2 id3 .. ] drug2 [ id1 id5 id6 .. ] drug3 [ id4 id7 
.. ]
-->
GrahamC
3-Dec-2010
[593x4]
combinations = pairs
If you use these 
 855348
211885
541713
849339
108911
as input to this page https://fd.cloud-ehr.net/drugrx.rsp
you'll see the output of the original script which produces html 
and not json
Steeve
3-Dec-2010
[597]
Well I was doing reference to this input ->

drug1 [ id1 id2 id3 .. ] drug2 [ id1 id5 id6 .. ] drug3 [ id4 id7 
.. ]
GrahamC
3-Dec-2010
[598x4]
["IBUPROFEN" [1113 2214 3359 3441 200017 200085] "HEPARIN" [706 1397 
5027 200078 200081 200082 200085] "ABCIXIMAB" [730 200018] "WARFARIN" 
[698 200023] "ASPIRIN" [40 724 1707 1733 3411 3688 3689 3704 3709 
4339 4876 200018]]
interaction found on ATC pair 40 200017 Knowledge IDs	: 6 7 289 

interaction found on ATC pair 40 200023 Knowledge IDs	: 3 4 5 164 
interaction found on ATC pair 40 200081 Knowledge IDs	: 15 1159 
interaction found on ATC pair 40 200082 Knowledge IDs	: 16 1164 
interaction found on ATC pair 724 200017 Knowledge IDs	: 6 7 289 
....
I suspect optimizing this part of the code is only going to save 
ms
the real cost is the sql queries
Steeve
3-Dec-2010
[602]
And what about purchasing a faster computer ? 

(I'm in a deep shit right know, I don't understand what he's talking 
about)
GrahamC
3-Dec-2010
[603]
There's a big difference in price between the various CPU configurations 
on amazon
GrahamC
4-Dec-2010
[604]
We have find/only for this

a: [ [ 1 2 ] [ 3 4 ] [ 5 6 ]]
find/only a [ 3 4 ]


but what if we wanted to find [ 4 3 ] where we want [ 3 4 ] to be 
equal [ 4 3 ] ie. same set?
Andreas
4-Dec-2010
[605]
Store sorted in a and sort the query before find.
GrahamC
4-Dec-2010
[606]
seems expensive to sort each element first
Andreas
4-Dec-2010
[607]
Cheaper than sorting it during each find.
GrahamC
4-Dec-2010
[608]
intersect I guess
BrianH
4-Dec-2010
[609]
Sort the elements on insert and keep them sorted. Then sort the value 
you are comparing to before looking for it.
Andreas
4-Dec-2010
[610]
Thanks, Brian, for reformulating what I wrote above.
BrianH
4-Dec-2010
[611]
Ah yes :)
Andreas
4-Dec-2010
[612x2]
Interesting R3 "bug" btw:
>> intersect [[1 2] [3 4] [5 6]] [[4 3]]
** Script error: block! type is not allowed here
Works fine in R2.
BrianH
4-Dec-2010
[614]
There is a ticket for that.
GrahamC
4-Dec-2010
[615x2]
very odd ... I changed to using blocks instead of sql, and the query 
increased from 1.7 s to 7 seconds!
I guess the sql indices are just faster than using a brute force 
search thru blocks
Henrik
5-Dec-2010
[617]
does a REBOL tar dearchiver exist? I can find an archiver in rebol.org, 
but not one the other way around.
BrianH
5-Dec-2010
[618]
Graham, you can do your own indices using hash!, but that might be 
pushing your complexity budget. Try it and see.
Anton
6-Dec-2010
[619]
Henrik, just run the program backwards.
...... sorry.