Aparajita,
Thanks that explains a lot. Its nice to know a bit more about what
the code is doing.
re idp.utils.GetThumbnailURlForImage you are right is is being
called more than once (I forgot I have it executing in a javascript
method as a sort of image preloader/highlighter). I had just assumed
it was part of the original observation.
Meanwhile I think I'll convert those while loops into for loops just
to gain an additional bit of speed...
Thanks for checking this out.
Regards, Michael.
On 1 Nov 2005, at 16:06, Aparajita Fishman wrote:
I'm seeing some strange behaviour when building 3 distinct rowsets
in a single page. It appears that each rowset and its map methods
is being called more times than there are records selected.
For example take the following code:
$map := """
imageURL: `idp.utils.GetThumbnailURlForImage`;
imageRecnum: `record number([Images])`;
"""
C_longint($rowSet)
$imageRowSet := RowSet.newFromSelection(->[Images];$map) `
Don't need callback
So despite only 2 image records being loaded, the image map method
gets called 13 times. Catalogue Entry gets called 3 times but for
only 1 record. Bibliography gets called 5 times for 3 records.
There are a few things happening here:
- When a newFromSelection RowSet is created, the row getter is
called to fill the row cache with the values for an empty record. I
have to do this because there is no way for me to know what the
type is for a column expression without executing it. That accounts
for one extra call to the column expression.
- If you are using RowSet.next to iterate through the RowSet, the
last call to next will move to the record after the last, again
loading empty values into the row cache. That accounts for one more
extra call. So that explains the second two cases.
If you want to avoid the extra call at the end, don't use
RowSet.next, instead use a for loop and call gotoRow.
As for why idp.utils.GetThumbnailURlForImage is being called so
many times, the only explanation I can offer is that you must be
iterating over the RowSet more than once. Are you using findRow?
Regards,
Aparajita
www.aparajitaworld.com
"If you dare to fail, you are bound to succeed."
- Sri Chinmoy | www.srichinmoylibrary.com
_______________________________________________
Active4D-dev mailing list
[email protected]
http://mailman.aparajitaworld.com/mailman/listinfo/active4d-dev
Archives: http://mailman.aparajitaworld.com/archive/active4d-dev/
_______________________________________________
Active4D-dev mailing list
[email protected]
http://mailman.aparajitaworld.com/mailman/listinfo/active4d-dev
Archives: http://mailman.aparajitaworld.com/archive/active4d-dev/